<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:AR="http://autosar.org/3.0.3" targetNamespace="http://autosar.org/3.0.3" elementFormDefault="qualified" attributeFormDefault="unqualified">
  <!--
AUTOSAR Schema Definition
-->
  <!--
Document Owner: AUTOSAR GbR
Document Responsibility: AUTOSAR GbR
Document Identification No: 230
Document Classification: Standard

Document Version: 3.1.0
Document Status: Final
Part of Release: 3.0
Revision: 0004
-->
  <!--
Disclaimer

This document of a specification as released by the AUTOSAR Development Partnership is intended for the purpose of information only. The commercial exploitation of material contained in this specification requires membership of the AUTOSAR Development Partnership or an agreement with the AUTOSAR Development Partnership. The AUTOSAR Development Partnership will not be liable for any use of this specification. Following the completion of the development of the AUTOSAR specifications commercial exploitation licenses will be made available to end users by way of written License Agreement only.
No part of this publication may be reproduced or utilized in any form or by any means, electronic or mechanical, including photocopying and microfilm, without per-mission in writing from the publisher." The word AUTOSAR and the AUTOSAR logo are registered trademarks.

Copyright © 2004-2008 AUTOSAR Development Partnership. All rights reserved.



Advice to users of AUTOSAR Specification Documents: 

AUTOSAR Specification Documents may contain exemplary items (exemplary reference models, "use cases", and/or references to exemplary technical solutions, devices, processes or software).
Any such exemplary items are contained in the Specification Documents for illustration purposes only, and they themselves are not part of the AUTOSAR Standard. Neither their presence in such Specification Documents, nor any later documentation of AUTOSAR conformance of products actually implementing such exemplary items, imply that intellectual property rights covering such exemplary items are licensed under the same rules as applicable to the AUTOSAR Standard.
-->
  <!-- $Id: $ -->
  <!-- element group for class Peripherals::ADC -->
  <xsd:group name="ADC">
    <xsd:annotation>
      <xsd:documentation>An ADC converts an analogue signal at an input pin to a digital value. The analogue signal are quantified to a maximum number of different levels defined by the resolution of the ADC. The Accuracy of the ADC is important for the overall functionality.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="BEHAVIOUR-AT-LIMIT" type="AR:ADC-BEHAVIOUR-AT-LIMIT-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines the action that is going to be performed when a limit is reached.
- Clipping: Logical value is limited to minimal or maximal range of the value range. E.g. The max. resolution of an ADC is at 5V represented 0xFF; in case off clipping a voltage of 6V is also represented as 0xFF;
- Undefined: Exceeding the resolution results in an undefined representation of the logical value. 
- Default: Exceeding the resolution results in a predefined default value. The default value might be a value, which report the status to the application e.g. as an error condition. 
- Other: A predefined function occur in order to prevent a undefined logical value. A typical application is a "Soft-Clipping" in a logarithmic form at the limit of the resolutions in audio applications.  The according methods have to be specified in the signal description.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Peripherals::ADC -->
  <xsd:complexType name="ADC" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>An ADC converts an analogue signal at an input pin to a digital value. The analogue signal are quantified to a maximum number of different levels defined by the resolution of the ADC. The Accuracy of the ADC is important for the overall functionality.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-ELEMENT" />
      <xsd:group ref="AR:PERIPHERAL" />
      <xsd:group ref="AR:ANALOGUE-IO" />
      <xsd:group ref="AR:ADC" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Identifiable::ARElement -->
  <xsd:group name="AR-ELEMENT">
    <xsd:annotation>
      <xsd:documentation>An element that can be defined stand-alone, i.e. without being part of another element (except for packages of course).

Opposed to packages, the elements are closed sets, i.e. that in a file based description, one ARElement needs to be described completely and cannot be extended or completed by another file.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- element group for class Datatypes::ARLimit -->
  <xsd:group name="AR-LIMIT">
    <xsd:sequence>
      <xsd:element name="VALUE" type="xsd:string" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- attribute group for class Datatypes::ARLimit -->
  <xsd:attributeGroup name="AR-LIMIT">
    <xsd:attribute name="INTERVAL-TYPE" type="AR:INTERVAL-TYPE-ENUM" />
  </xsd:attributeGroup>
  <!-- complex type for class Datatypes::ARLimit -->
  <xsd:complexType name="AR-LIMIT">
    <xsd:simpleContent>
      <xsd:extension base="xsd:string">
        <xsd:attributeGroup ref="AR:AR-OBJECT" />
        <xsd:attributeGroup ref="AR:AR-LIMIT" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <!-- element group for class Infrastructure::ARObject -->
  <xsd:group name="AR-OBJECT">
    <xsd:annotation>
      <xsd:documentation>Implicit base class of all classes in metamodel.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- attribute group for class Infrastructure::ARObject -->
  <xsd:attributeGroup name="AR-OBJECT">
    <xsd:annotation>
      <xsd:documentation>Implicit base class of all classes in metamodel.</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="S" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>checksum calculated from the 
* attributes
* aggregations and aggregated non-identifiables
* references</xsd:documentation>
        <xsd:appinfo source="tags">xml.attribute="true";xml.name="S"</xsd:appinfo>
      </xsd:annotation>
    </xsd:attribute>
    <xsd:attribute name="T" type="xsd:dateTime">
      <xsd:annotation>
        <xsd:documentation>the timestamp of the creation or modification of an instance, its attributes, references or aggregated non-identifiables.</xsd:documentation>
        <xsd:appinfo source="tags">xml.attribute="true";xml.name="T"</xsd:appinfo>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:attributeGroup>
  <!-- element group for class Autosar::ARPackage -->
  <xsd:group name="AR-PACKAGE">
    <xsd:annotation>
      <xsd:documentation>AUTOSAR package, allowing to create top level packages to structure the contained ARElements.

ARPackages are open sets, which means that in a file based description system, multiple files can be used to partially describe the contents of a package.

This is an extended version of MSR's SW-SYSTEM.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ELEMENTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="ADC" type="AR:ADC" />
            <xsd:element name="ACTUATOR-HW" type="AR:ACTUATOR-HW" />
            <xsd:element name="APPLICATION-SOFTWARE-COMPONENT-TYPE" type="AR:APPLICATION-SOFTWARE-COMPONENT-TYPE" />
            <xsd:element name="ARRAY-TYPE" type="AR:ARRAY-TYPE" />
            <xsd:element name="BOOLEAN-TYPE" type="AR:BOOLEAN-TYPE" />
            <xsd:element name="BSW-BEHAVIOR" type="AR:BSW-BEHAVIOR" />
            <xsd:element name="BSW-IMPLEMENTATION" type="AR:BSW-IMPLEMENTATION" />
            <xsd:element name="BSW-MODULE-DESCRIPTION" type="AR:BSW-MODULE-DESCRIPTION" />
            <xsd:element name="BSW-MODULE-ENTRY" type="AR:BSW-MODULE-ENTRY" />
            <xsd:element name="CCU" type="AR:CCU" />
            <xsd:element name="CALPRM-COMPONENT-TYPE" type="AR:CALPRM-COMPONENT-TYPE" />
            <xsd:element name="CALPRM-INTERFACE" type="AR:CALPRM-INTERFACE" />
            <xsd:element name="CAN-CLUSTER" type="AR:CAN-CLUSTER" />
            <xsd:element name="CHAR-TYPE" type="AR:CHAR-TYPE" />
            <xsd:element name="CLIENT-SERVER-INTERFACE" type="AR:CLIENT-SERVER-INTERFACE" />
            <xsd:element name="CLOCK" type="AR:CLOCK" />
            <xsd:element name="COMMUNICATION-CLUSTER" type="AR:COMMUNICATION-CLUSTER" />
            <xsd:element name="COMMUNICATION-PERIPHERAL" type="AR:COMMUNICATION-PERIPHERAL" />
            <xsd:element name="COMMUNICATION-TRANSCEIVER" type="AR:COMMUNICATION-TRANSCEIVER" />
            <xsd:element name="COMPLEX-DEVICE-DRIVER-COMPONENT-TYPE" type="AR:COMPLEX-DEVICE-DRIVER-COMPONENT-TYPE" />
            <xsd:element name="COMPOSITION-TYPE" type="AR:COMPOSITION-TYPE" />
            <xsd:element name="COMPU-METHOD" type="AR:COMPU-METHOD" />
            <xsd:element name="CONSTANT-SPECIFICATION" type="AR:CONSTANT-SPECIFICATION" />
            <xsd:element name="DAC" type="AR:DAC" />
            <xsd:element name="DATA-CONSTR" type="AR:DATA-CONSTR" />
            <xsd:element name="DCM-I-PDU" type="AR:DCM-I-PDU" />
            <xsd:element name="DIGITAL-IO" type="AR:DIGITAL-IO" />
            <xsd:element name="DISCRETE-ECU-ELECTRONICS" type="AR:DISCRETE-ECU-ELECTRONICS" />
            <xsd:element name="DISPLAY-HW" type="AR:DISPLAY-HW" />
            <xsd:element name="ECU" type="AR:ECU" />
            <xsd:element name="ECU-ABSTRACTION-COMPONENT-TYPE" type="AR:ECU-ABSTRACTION-COMPONENT-TYPE" />
            <xsd:element name="ECU-CONFIGURATION" type="AR:ECU-CONFIGURATION" />
            <xsd:element name="ECU-INSTANCE" type="AR:ECU-INSTANCE" />
            <xsd:element name="ECU-PARAMETER-DEFINITION" type="AR:ECU-PARAMETER-DEFINITION" />
            <xsd:element name="ECU-SW-COMPOSITION" type="AR:ECU-SW-COMPOSITION" />
            <xsd:element name="FLEXRAY-CLUSTER" type="AR:FLEXRAY-CLUSTER" />
            <xsd:element name="FRAME" type="AR:FRAME" />
            <xsd:element name="GATEWAY" type="AR:GATEWAY" />
            <xsd:element name="HW-CONTAINER" type="AR:HW-CONTAINER" />
            <xsd:element name="I-PDU-GROUP" type="AR:I-PDU-GROUP" />
            <xsd:element name="I-SIGNAL" type="AR:I-SIGNAL" />
            <xsd:element name="IMPLEMENTATION" type="AR:IMPLEMENTATION" />
            <xsd:element name="INTEGER-TYPE" type="AR:INTEGER-TYPE" />
            <xsd:element name="INTERNAL-BEHAVIOR" type="AR:INTERNAL-BEHAVIOR" />
            <xsd:element name="LIN-CLUSTER" type="AR:LIN-CLUSTER" />
            <xsd:element name="MODE-DECLARATION-GROUP" type="AR:MODE-DECLARATION-GROUP" />
            <xsd:element name="MODULE-CONFIGURATION" type="AR:MODULE-CONFIGURATION" />
            <xsd:element name="MODULE-DEF" type="AR:MODULE-DEF" />
            <xsd:element name="MULTIPLEXED-I-PDU" type="AR:MULTIPLEXED-I-PDU" />
            <xsd:element name="N-PDU" type="AR:N-PDU" />
            <xsd:element name="NM-PDU" type="AR:NM-PDU" />
            <xsd:element name="OPAQUE-TYPE" type="AR:OPAQUE-TYPE" />
            <xsd:element name="OSCILLATOR" type="AR:OSCILLATOR" />
            <xsd:element name="PWD" type="AR:PWD" />
            <xsd:element name="PWM" type="AR:PWM" />
            <xsd:element name="PERIPHERAL" type="AR:PERIPHERAL" />
            <xsd:element name="PHYSICAL-DIMENSION" type="AR:PHYSICAL-DIMENSION" />
            <xsd:element name="POWER-DRIVER-HW-ELEMENT" type="AR:POWER-DRIVER-HW-ELEMENT" />
            <xsd:element name="POWER-SUPPLY-HW-ELEMENT" type="AR:POWER-SUPPLY-HW-ELEMENT" />
            <xsd:element name="PROCESSING-UNIT" type="AR:PROCESSING-UNIT" />
            <xsd:element name="PROVIDED-MEMORY-SEGMENT" type="AR:PROVIDED-MEMORY-SEGMENT" />
            <xsd:element name="PROVIDED-NV-MEMORY-SEGMENT" type="AR:PROVIDED-NV-MEMORY-SEGMENT" />
            <xsd:element name="REAL-TYPE" type="AR:REAL-TYPE" />
            <xsd:element name="RECORD-TYPE" type="AR:RECORD-TYPE" />
            <xsd:element name="SENDER-RECEIVER-INTERFACE" type="AR:SENDER-RECEIVER-INTERFACE" />
            <xsd:element name="SENSOR-ACTUATOR-SOFTWARE-COMPONENT-TYPE" type="AR:SENSOR-ACTUATOR-SOFTWARE-COMPONENT-TYPE" />
            <xsd:element name="SENSOR-HW" type="AR:SENSOR-HW" />
            <xsd:element name="SERVICE-COMPONENT-TYPE" type="AR:SERVICE-COMPONENT-TYPE" />
            <xsd:element name="SIGNAL-I-PDU" type="AR:SIGNAL-I-PDU" />
            <xsd:element name="STRING-TYPE" type="AR:STRING-TYPE" />
            <xsd:element name="SUBSTITUTION-FRAME" type="AR:SUBSTITUTION-FRAME" />
            <xsd:element name="SW-ADDR-METHOD" type="AR:SW-ADDR-METHOD" />
            <xsd:element name="SW-AXIS-TYPE" type="AR:SW-AXIS-TYPE" />
            <xsd:element name="SW-BASE-TYPE" type="AR:SW-BASE-TYPE" />
            <xsd:element name="SW-CALPRM" type="AR:SW-CALPRM" />
            <xsd:element name="SW-CLASS" type="AR:SW-CLASS" />
            <xsd:element name="SW-CLASS-INSTANCE" type="AR:SW-CLASS-INSTANCE" />
            <xsd:element name="SW-CODE-SYNTAX" type="AR:SW-CODE-SYNTAX" />
            <xsd:element name="SW-RECORD-LAYOUT" type="AR:SW-RECORD-LAYOUT" />
            <xsd:element name="SW-SERVICE" type="AR:SW-SERVICE" />
            <xsd:element name="SW-VARIABLE" type="AR:SW-VARIABLE" />
            <xsd:element name="SWC-IMPLEMENTATION" type="AR:SWC-IMPLEMENTATION" />
            <xsd:element name="SYSTEM" type="AR:SYSTEM" />
            <xsd:element name="SYSTEM-SIGNAL" type="AR:SYSTEM-SIGNAL" />
            <xsd:element name="SYSTEM-SIGNAL-GROUP" type="AR:SYSTEM-SIGNAL-GROUP" />
            <xsd:element name="TIMER" type="AR:TIMER" />
            <xsd:element name="UNIT" type="AR:UNIT" />
            <xsd:element name="WATCH-DOG" type="AR:WATCH-DOG" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SUB-PACKAGES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="AR-PACKAGE" type="AR:AR-PACKAGE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Autosar::ARPackage -->
  <xsd:complexType name="AR-PACKAGE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>AUTOSAR package, allowing to create top level packages to structure the contained ARElements.

ARPackages are open sets, which means that in a file based description system, multiple files can be used to partially describe the contents of a package.

This is an extended version of MSR's SW-SYSTEM.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:AR-PACKAGE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Autosar::AUTOSAR -->
  <xsd:group name="AUTOSAR">
    <xsd:annotation>
      <xsd:documentation>Root element of an AUTOSAR description, also the root element in corresponding XML documents.</xsd:documentation>
      <xsd:appinfo source="tags">admin.documentClassification="Auxiliary";admin.documentIdentificationNo="059";admin.documentOwner="AUTOSAR GbR";admin.documentResponsibility="AUTOSAR GbR";admin.documentStatus="Final";admin.documentTitle="Metamodel";admin.documentVersion="3.1.0";admin.partOfRelease="3.0";admin.revision="0004";xml.globalElement="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ADMIN-DATA" type="AR:ADMIN-DATA" minOccurs="0" maxOccurs="1" />
      <xsd:element name="TOP-LEVEL-PACKAGES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="AR-PACKAGE" type="AR:AR-PACKAGE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Autosar::AUTOSAR -->
  <xsd:complexType name="AUTOSAR" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Root element of an AUTOSAR description, also the root element in corresponding XML documents.</xsd:documentation>
      <xsd:appinfo source="tags">admin.documentClassification="Auxiliary";admin.documentIdentificationNo="059";admin.documentOwner="AUTOSAR GbR";admin.documentResponsibility="AUTOSAR GbR";admin.documentStatus="Final";admin.documentTitle="Metamodel";admin.documentVersion="3.1.0";admin.partOfRelease="3.0";admin.revision="0004";xml.globalElement="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:AUTOSAR" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- global element for class Autosar::AUTOSAR -->
  <xsd:element name="AUTOSAR" type="AR:AUTOSAR">
    <xsd:annotation>
      <xsd:documentation>Root element of an AUTOSAR description, also the root element in corresponding XML documents.</xsd:documentation>
      <xsd:appinfo source="tags">admin.documentClassification="Auxiliary";admin.documentIdentificationNo="059";admin.documentOwner="AUTOSAR GbR";admin.documentResponsibility="AUTOSAR GbR";admin.documentStatus="Final";admin.documentTitle="Metamodel";admin.documentVersion="3.1.0";admin.partOfRelease="3.0";admin.revision="0004";xml.globalElement="true"</xsd:appinfo>
    </xsd:annotation>
  </xsd:element>
  <!-- element group for class Timing::AbsoluteTolerance -->
  <xsd:group name="ABSOLUTE-TOLERANCE">
    <xsd:annotation>
      <xsd:documentation>Maximum allowable deviation</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ABSOLUTE" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Maximum allowable deviation in duration (in seconds)</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Timing::AbsoluteTolerance -->
  <xsd:complexType name="ABSOLUTE-TOLERANCE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Maximum allowable deviation</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:ABSOLUTE-TOLERANCE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class FlexrayCommunication::AbsolutelyScheduledTiming -->
  <xsd:group name="ABSOLUTELY-SCHEDULED-TIMING">
    <xsd:annotation>
      <xsd:documentation>Each frame in FlexRay is identified by its slot id and communication cycle. A description is provided by the usage of AbsolutelyScheduledTiming. 

In the static segment a frame can be sent multiple times within one communication cycle. For describing this case multiple AbsolutelyScheduledTimings have to be used. The main use case would be that a frame is sent twice within one communication cycle.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="COMMUNICATION-CYCLE" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="1">
            <xsd:element name="CYCLE-COUNTER" type="AR:CYCLE-COUNTER" />
            <xsd:element name="CYCLE-REPETITION" type="AR:CYCLE-REPETITION" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SLOT-ID" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>In the static part the SlotID defines the slot in which the frame is transmitted. 
The SlotID also determines, in combination with FlexrayCluster::numberOfStaticSlots, whether the frame is sent in static or dynamic segment. 
In the dynamic part, the slot id is equivalent to a priority. Lower dynamic slot ids are all sent until the end of the dynamic segment. Higher numbers, which were ignored that time, have to wait one cycle and then must try again.

minValue: 1
maxValue: 2047</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class FlexrayCommunication::AbsolutelyScheduledTiming -->
  <xsd:complexType name="ABSOLUTELY-SCHEDULED-TIMING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Each frame in FlexRay is identified by its slot id and communication cycle. A description is provided by the usage of AbsolutelyScheduledTiming. 

In the static segment a frame can be sent multiple times within one communication cycle. For describing this case multiple AbsolutelyScheduledTimings have to be used. The main use case would be that a frame is sent twice within one communication cycle.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:ABSOLUTELY-SCHEDULED-TIMING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class CoreCommunication::AbstractSignal -->
  <xsd:group name="ABSTRACT-SIGNAL">
    <xsd:annotation>
      <xsd:documentation>A single signal or a signal group (XOR).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <xsd:simpleType name="ABSTRACT-SIGNAL--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="ABSTRACT-SIGNAL" />
      <xsd:enumeration value="SYSTEM-SIGNAL" />
      <xsd:enumeration value="SYSTEM-SIGNAL-GROUP" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class SensorActuator::ActuatorHW -->
  <xsd:group name="ACTUATOR-HW">
    <xsd:annotation>
      <xsd:documentation>HW Element Actuator definition.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DEFAULT-POSITION-TYPE" type="AR:ACTUATOR-HW-DEFAULT-POSITIOIN-TYPE-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines the way the actuator is seen after power on. On Bi-Stable or Multistable actuators the software has to know the status of this device after reset or Power On.
Each actuator has a control input that determines its behaviour</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="DEFAULT-POSITION-VALUE" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>If there is a specific default value is available. E.g. Valve status = off;</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="ELECTRICAL-TYPE" type="AR:ACTUATOR-HW-ELECTRICAL-TYPE-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines the most typical electrical behaviour of the system. This information is necessary for the ECU generation process and for tools which check for later interaction of the different component. (avoid resonance's, planning of the ECU power management).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="ENDURANCE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Number of activation cycles the actuator is designed for.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MOVEMENT" type="AR:ACTUATOR-HW-MOVEMENT-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines the way the movement is controlled by AUTOSAR. Positional feedback can be provided by the actuator by the conglomeration of the requisite actuator and sensor primitives.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SensorActuator::ActuatorHW -->
  <xsd:complexType name="ACTUATOR-HW" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>HW Element Actuator definition.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-ELEMENT" />
      <xsd:group ref="AR:SENSOR-ACTUATOR-HW" />
      <xsd:group ref="AR:ACTUATOR-HW" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class AdminData::AdminData -->
  <xsd:group name="ADMIN-DATA">
    <xsd:annotation>
      <xsd:documentation>&lt;adminData&gt; can be used to set administrative information for an element. This administration information is to be treated as metadata such as revision id or state of the file. There are basically four kinds of metadata

* The language and/or used laguages.

* Revision information covering e.g. revision number, state, release date, changes. Note that this information can be given in general as well as related to a particular company.

* Document metadata specific for a company

* Formatting controls that can affect layouts for example.

* Revision information for the element.</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="ASAM-ADMIN-DATA";msr.id="type__ADMIN-DATA_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="LANGUAGE" type="AR:L-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This attribute  specifies the master language of the document or the document fragment. The master language is the one in which the document is maintained and from which the other languages are derived from.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="ADMIN-DATA_TYPE__LANGUAGE";msr.tbdString="true";xml.sequenceOffset="20"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="USED-LANGUAGES" type="AR:ML-DATA-10" minOccurs="0" maxOccurs="1" />
      <xsd:element name="DOC-REVISIONS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="DOC-REVISION" type="AR:DOC-REVISION" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SDGS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SDG" type="AR:SDG" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class AdminData::AdminData -->
  <xsd:complexType name="ADMIN-DATA" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>&lt;adminData&gt; can be used to set administrative information for an element. This administration information is to be treated as metadata such as revision id or state of the file. There are basically four kinds of metadata

* The language and/or used laguages.

* Revision information covering e.g. revision number, state, release date, changes. Note that this information can be given in general as well as related to a particular company.

* Document metadata specific for a company

* Formatting controls that can affect layouts for example.

* Revision information for the element.</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="ASAM-ADMIN-DATA";msr.id="type__ADMIN-DATA_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:ADMIN-DATA" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Filter::Always -->
  <xsd:group name="ALWAYS">
    <xsd:annotation>
      <xsd:documentation>No filtering is performed so that the message always passes.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Filter::Always -->
  <xsd:complexType name="ALWAYS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>No filtering is performed so that the message always passes.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Peripherals::AnalogueIO -->
  <xsd:group name="ANALOGUE-IO">
    <xsd:annotation>
      <xsd:documentation>These are the common attributes for both, the ADC and the DAC.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ACCURACY" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>There is a number of different conversion error in an ADC or DAC like non-linearity and absolute error. The accuracy is defined as the total error and it can be expressed as a deviation from its nominal value by e.g. 0.5, 1.0, 1.5 or 2.0 LSB.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="CONVERSION-TIME" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>ADC: The conversion time is the definition how long it takes for an ADC to convert an analogue signal to a digital value.
DAC: The conversion time is the definition how long it takes for a DAC to convert a digital value to an analogue signal.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="EXTERNAL-REFERENCE-VOLTAGE" type="AR:ELECTRICAL-RANGE" minOccurs="0" maxOccurs="1" />
      <xsd:element name="MODE" type="AR:ANALOGUE-IO-MODE-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>An ADC or DAC can operate in continuous, single  or sequential mode. In the continuous mode the conversion is automatically repeated after a completion. In single shot only one conversion is performed. For the sequential mode can a predefined number of different analogue channels be converted.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MULTIPLEXED-M" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines the design of a simple multiplexer used by an ADC. Example A 2:8-multiplexer has 2 input channels and 8 registers. M is the second value.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MULTIPLEXED-N" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines the design of a simple multiplexer used by an ADC. Example A 2:8-multiplexer has 2 input channels and 8 registers. N is the first value.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="RESOLUTION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>For an Analogue to Digital Converter the resolution defines the number of different voltage levels, which are converted to a digital value. For example, an ADC with 10-bits resolution have the ability to convert an analogue value into 1024 different digital  values.
Unit: Bits</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="WIDTH" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The number of Bits used to store the digital value.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class Annotation::Annotation -->
  <xsd:group name="ANNOTATION">
    <xsd:annotation>
      <xsd:documentation>This is a plain annotation which does not have further formal data.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__ANNOTATION_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Annotation::Annotation -->
  <xsd:complexType name="ANNOTATION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This is a plain annotation which does not have further formal data.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__ANNOTATION_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:GENERAL-ANNOTATION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class PortInterface::ApplicationError -->
  <xsd:group name="APPLICATION-ERROR">
    <xsd:annotation>
      <xsd:documentation>This is a user-defined error that is associated with an element of an AUTOSAR interface. It is specific for the particular functionality or service provided by the AUTOSAR software component.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ERROR-CODE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The RTE generator is forced to assign this value to the corresponding error symbol. Note that for error codes certain ranges are predefined (see RTE specification).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class PortInterface::ApplicationError -->
  <xsd:complexType name="APPLICATION-ERROR" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This is a user-defined error that is associated with an element of an AUTOSAR interface. It is specific for the particular functionality or service provided by the AUTOSAR software component.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:APPLICATION-ERROR" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="APPLICATION-ERROR--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="APPLICATION-ERROR" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class DataMapping::ApplicationErrorMapping -->
  <xsd:group name="APPLICATION-ERROR-MAPPING">
    <xsd:annotation>
      <xsd:documentation>In client server communication, the server may return any value within the application error range.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SYSTEM-SIGNAL-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SYSTEM-SIGNAL--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DataMapping::ApplicationErrorMapping -->
  <xsd:complexType name="APPLICATION-ERROR-MAPPING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>In client server communication, the server may return any value within the application error range.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:APPLICATION-ERROR-MAPPING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Components::ApplicationSoftwareComponentType -->
  <xsd:group name="APPLICATION-SOFTWARE-COMPONENT-TYPE">
    <xsd:annotation>
      <xsd:documentation>The ApplicationSoftwareComponentType is used to represent the application software.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Components::ApplicationSoftwareComponentType -->
  <xsd:complexType name="APPLICATION-SOFTWARE-COMPONENT-TYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The ApplicationSoftwareComponentType is used to represent the application software.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:COMPONENT-TYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Characteristic::ArCalprmRef -->
  <xsd:group name="AR-CALPRM-REF">
    <xsd:sequence>
      <xsd:element name="AR-CALPRM-IREF" type="AR:AR-CALPRM-REF--CALPRM-ELEMENT-PROTOTYPE-IREF" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Characteristic::ArCalprmRef -->
  <xsd:complexType name="AR-CALPRM-REF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:AR-CALPRM-REF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class _instanceRef::ArCalprmRef_CalprmElementPrototype -->
  <xsd:group name="AR-CALPRM-REF--CALPRM-ELEMENT-PROTOTYPE-IREF">
    <xsd:sequence>
      <xsd:element name="COMPONENT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMPONENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PORT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:PORT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="CALPRM-ELEMENT-PROTOTYPE-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:CALPRM-ELEMENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::ArCalprmRef_CalprmElementPrototype -->
  <xsd:complexType name="AR-CALPRM-REF--CALPRM-ELEMENT-PROTOTYPE-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:AR-CALPRM-REF--CALPRM-ELEMENT-PROTOTYPE-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class PortInterface::ArgumentPrototype -->
  <xsd:group name="ARGUMENT-PROTOTYPE">
    <xsd:annotation>
      <xsd:documentation>An argument of an operation, much like a data element, but also carries direction information and is associated with a particular operation.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DIRECTION" type="AR:DIRECTION-KIND" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class PortInterface::ArgumentPrototype -->
  <xsd:complexType name="ARGUMENT-PROTOTYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>An argument of an operation, much like a data element, but also carries direction information and is associated with a particular operation.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:DATA-PROTOTYPE" />
      <xsd:group ref="AR:ARGUMENT-PROTOTYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="ARGUMENT-PROTOTYPE--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="ARGUMENT-PROTOTYPE" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class Datatypes::ArrayElement -->
  <xsd:group name="ARRAY-ELEMENT">
    <xsd:sequence>
      <xsd:element name="MAX-NUMBER-OF-ELEMENTS" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The maximum number of elements that the array can contain.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Datatypes::ArrayElement -->
  <xsd:complexType name="ARRAY-ELEMENT" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:DATA-PROTOTYPE" />
      <xsd:group ref="AR:ARRAY-ELEMENT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="ARRAY-ELEMENT--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="ARRAY-ELEMENT" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class Constants::ArraySpecification -->
  <xsd:group name="ARRAY-SPECIFICATION">
    <xsd:annotation>
      <xsd:documentation>A constant array, which refers to its elements by index.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ELEMENTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="ARRAY-SPECIFICATION" type="AR:ARRAY-SPECIFICATION" />
            <xsd:element name="BOOLEAN-LITERAL" type="AR:BOOLEAN-LITERAL" />
            <xsd:element name="CHAR-LITERAL" type="AR:CHAR-LITERAL" />
            <xsd:element name="CONSTANT-REFERENCE" type="AR:CONSTANT-REFERENCE" />
            <xsd:element name="INTEGER-LITERAL" type="AR:INTEGER-LITERAL" />
            <xsd:element name="OPAQUE-LITERAL" type="AR:OPAQUE-LITERAL" />
            <xsd:element name="REAL-LITERAL" type="AR:REAL-LITERAL" />
            <xsd:element name="RECORD-SPECIFICATION" type="AR:RECORD-SPECIFICATION" />
            <xsd:element name="STRING-LITERAL" type="AR:STRING-LITERAL" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Constants::ArraySpecification -->
  <xsd:complexType name="ARRAY-SPECIFICATION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A constant array, which refers to its elements by index.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:DATA-PROTOTYPE" />
      <xsd:group ref="AR:ARRAY-SPECIFICATION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Datatypes::ArrayType -->
  <xsd:group name="ARRAY-TYPE">
    <xsd:sequence>
      <xsd:element name="ELEMENT" type="AR:ARRAY-ELEMENT" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Datatypes::ArrayType -->
  <xsd:complexType name="ARRAY-TYPE" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:ARRAY-TYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Composition::AssemblyConnectorPrototype -->
  <xsd:group name="ASSEMBLY-CONNECTOR-PROTOTYPE">
    <xsd:annotation>
      <xsd:documentation>AssemblyConnectorPrototypes are exclusively used to connect ComponentPrototypes in the context of a CompositionType.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="PROVIDER-IREF" type="AR:ASSEMBLY-CONNECTOR-PROTOTYPE--PROVIDER-IREF" minOccurs="0" maxOccurs="1" />
      <xsd:element name="REQUESTER-IREF" type="AR:ASSEMBLY-CONNECTOR-PROTOTYPE--REQUESTER-IREF" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Composition::AssemblyConnectorPrototype -->
  <xsd:complexType name="ASSEMBLY-CONNECTOR-PROTOTYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>AssemblyConnectorPrototypes are exclusively used to connect ComponentPrototypes in the context of a CompositionType.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:ASSEMBLY-CONNECTOR-PROTOTYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="ASSEMBLY-CONNECTOR-PROTOTYPE--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="ASSEMBLY-CONNECTOR-PROTOTYPE" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class _instanceRef::AssemblyConnectorPrototype_provider -->
  <xsd:group name="ASSEMBLY-CONNECTOR-PROTOTYPE--PROVIDER-IREF">
    <xsd:sequence>
      <xsd:element name="COMPONENT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMPONENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="P-PORT-PROTOTYPE-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:P-PORT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::AssemblyConnectorPrototype_provider -->
  <xsd:complexType name="ASSEMBLY-CONNECTOR-PROTOTYPE--PROVIDER-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:ASSEMBLY-CONNECTOR-PROTOTYPE--PROVIDER-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class _instanceRef::AssemblyConnectorPrototype_requester -->
  <xsd:group name="ASSEMBLY-CONNECTOR-PROTOTYPE--REQUESTER-IREF">
    <xsd:sequence>
      <xsd:element name="COMPONENT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMPONENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="R-PORT-PROTOTYPE-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:R-PORT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::AssemblyConnectorPrototype_requester -->
  <xsd:complexType name="ASSEMBLY-CONNECTOR-PROTOTYPE--REQUESTER-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:ASSEMBLY-CONNECTOR-PROTOTYPE--REQUESTER-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ECUResourceTemplate::AssemblyHWConnection -->
  <xsd:group name="ASSEMBLY-HW-CONNECTION">
    <xsd:annotation>
      <xsd:documentation>An AssemblyHWConnection is established between at least two HWPorts provided by different HWElements. 
The AssemblyHWConnection can only be established between HWPorts on the same hierarchical level. To connect accross hierarchical levels use the DelegationHWConnection.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="HW-PORT-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="HW-PORT-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:HW-PORT--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUResourceTemplate::AssemblyHWConnection -->
  <xsd:complexType name="ASSEMBLY-HW-CONNECTION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>An AssemblyHWConnection is established between at least two HWPorts provided by different HWElements. 
The AssemblyHWConnection can only be established between HWPorts on the same hierarchical level. To connect accross hierarchical levels use the DelegationHWConnection.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-CONNECTION" />
      <xsd:group ref="AR:ASSEMBLY-HW-CONNECTION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class LinCommunication::AssignFrameIdTiming -->
  <xsd:group name="ASSIGN-FRAME-ID-TIMING">
    <xsd:annotation>
      <xsd:documentation>Schedule entry for an  Assign Frame Id master request.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ASSIGNED-FRAME-TRIGGERING-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:LIN-FRAME-TRIGGERING--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class LinCommunication::AssignFrameIdTiming -->
  <xsd:complexType name="ASSIGN-FRAME-ID-TIMING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Schedule entry for an  Assign Frame Id master request.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:RELATIVELY-SCHEDULED-TIMING" />
      <xsd:group ref="AR:ASSIGNMENT-TIMING-TYPE" />
      <xsd:group ref="AR:ASSIGN-FRAME-ID-TIMING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class LinCommunication::AssignNadTiming -->
  <xsd:group name="ASSIGN-NAD-TIMING">
    <xsd:annotation>
      <xsd:documentation>Schedule entry for an Assign NAD master request.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="NEW-NAD" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The newly assigned NAD value (valid range 1..126)</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class LinCommunication::AssignNadTiming -->
  <xsd:complexType name="ASSIGN-NAD-TIMING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Schedule entry for an Assign NAD master request.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:RELATIVELY-SCHEDULED-TIMING" />
      <xsd:group ref="AR:ASSIGNMENT-TIMING-TYPE" />
      <xsd:group ref="AR:ASSIGN-NAD-TIMING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class LinCommunication::AssignmentTimingType -->
  <xsd:group name="ASSIGNMENT-TIMING-TYPE">
    <xsd:annotation>
      <xsd:documentation>A LIN specific extension of the common RelativelyScheduledTiming
The extension describes the LIN specific assignment frames.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ASSIGNED-CONTROLLER-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:LIN-COMMUNICATION-CONTROLLER--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class ServerCall::AsynchronousServerCallPoint -->
  <xsd:group name="ASYNCHRONOUS-SERVER-CALL-POINT">
    <xsd:annotation>
      <xsd:documentation>An asynchronous server call-point is used for asynchronous invocation of an operation prototype. It is associated with AsynchronousServerCallReturnsEvent, this RTEEvent notifies the completion of the required operation or a timeout, this event can be waited for or it can lead to the invocation of a runnable. 
IMPORTANT: a server-call-point cannot be used concurrently. Once the client runnable has made the invocation, the server-call-point cannot be used until the call returns (or an error occurs!) at which point the server call-point becomes available again...</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ServerCall::AsynchronousServerCallPoint -->
  <xsd:complexType name="ASYNCHRONOUS-SERVER-CALL-POINT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>An asynchronous server call-point is used for asynchronous invocation of an operation prototype. It is associated with AsynchronousServerCallReturnsEvent, this RTEEvent notifies the completion of the required operation or a timeout, this event can be waited for or it can lead to the invocation of a runnable. 
IMPORTANT: a server-call-point cannot be used concurrently. Once the client runnable has made the invocation, the server-call-point cannot be used until the call returns (or an error occurs!) at which point the server call-point becomes available again...</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:SERVER-CALL-POINT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="ASYNCHRONOUS-SERVER-CALL-POINT--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="ASYNCHRONOUS-SERVER-CALL-POINT" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class RTEEvents::AsynchronousServerCallReturnsEvent -->
  <xsd:group name="ASYNCHRONOUS-SERVER-CALL-RETURNS-EVENT">
    <xsd:annotation>
      <xsd:documentation>This event is raised when an asynchronous server call is finished.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="EVENT-SOURCE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:ASYNCHRONOUS-SERVER-CALL-POINT--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class RTEEvents::AsynchronousServerCallReturnsEvent -->
  <xsd:complexType name="ASYNCHRONOUS-SERVER-CALL-RETURNS-EVENT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This event is raised when an asynchronous server call is finished.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:RTE-EVENT" />
      <xsd:group ref="AR:ASYNCHRONOUS-SERVER-CALL-RETURNS-EVENT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Components::AtomicSoftwareComponentType -->
  <xsd:group name="ATOMIC-SOFTWARE-COMPONENT-TYPE">
    <xsd:annotation>
      <xsd:documentation>An atomic software component is atomic in the sense that it cannot be further decomposed and distributed across multiple ECUs.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <xsd:simpleType name="ATOMIC-SOFTWARE-COMPONENT-TYPE--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="APPLICATION-SOFTWARE-COMPONENT-TYPE" />
      <xsd:enumeration value="ATOMIC-SOFTWARE-COMPONENT-TYPE" />
      <xsd:enumeration value="COMPLEX-DEVICE-DRIVER-COMPONENT-TYPE" />
      <xsd:enumeration value="ECU-ABSTRACTION-COMPONENT-TYPE" />
      <xsd:enumeration value="SENSOR-ACTUATOR-SOFTWARE-COMPONENT-TYPE" />
      <xsd:enumeration value="SERVICE-COMPONENT-TYPE" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class BaseTypes::BaseType -->
  <xsd:group name="BASE-TYPE">
    <xsd:sequence>
      <xsd:choice minOccurs="0" maxOccurs="1">
        <xsd:group ref="AR:BASE-TYPE-DIRECT-DEFINITION" />
        <xsd:group ref="AR:BASE-TYPE-INDIRECT-DEFINITION" />
      </xsd:choice>
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class BaseTypes::BaseTypeAbsSize -->
  <xsd:group name="BASE-TYPE-ABS-SIZE">
    <xsd:annotation>
      <xsd:documentation>This is the absolute size of the basetype. In this case the BaseType is of fixed lenght.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="special__BASE-TYPE_absSize_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="BASE-TYPE-SIZE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Describes the length of the data type specified in the container in bits.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="BASE-TYPE_absSize_TYPE__BASE-TYPE-SIZE";msr.tbdString="true";xml.sequenceOffset="60"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class BaseTypes::BaseTypeAbsSize -->
  <xsd:complexType name="BASE-TYPE-ABS-SIZE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This is the absolute size of the basetype. In this case the BaseType is of fixed lenght.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="special__BASE-TYPE_absSize_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:BASE-TYPE-ABS-SIZE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class BaseTypes::BaseTypeDefinition -->
  <xsd:group name="BASE-TYPE-DEFINITION">
    <xsd:sequence />
  </xsd:group>
  <!-- element group for class BaseTypes::BaseTypeDirectDefinition -->
  <xsd:group name="BASE-TYPE-DIRECT-DEFINITION">
    <xsd:annotation>
      <xsd:documentation>This BaseType is defined directly (as opposite to a derived BaseType)</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="special__BASE-TYPE_directDefinition_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:choice minOccurs="0" maxOccurs="1">
        <xsd:group ref="AR:BASE-TYPE-ABS-SIZE" />
        <xsd:group ref="AR:BASE-TYPE-MAX-SIZE" />
      </xsd:choice>
      <xsd:element name="BASE-TYPE-ENCODING" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This specifies, how an object of the current BaseType is encode eg. in an ECU in a message sequence.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="BASE-TYPE_directDefinition_TYPE__BASE-TYPE-ENCODING";msr.tbdString="true";xml.sequenceOffset="90"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MEM-ALIGNMENT" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>describes the alignment of the memory object in bits. E.g. "1" specifies, that the object in question is aligned to a byte while "32" specifies that it is aligned four byte.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="BASE-TYPE_directDefinition_TYPE__MEM-ALIGNMENT";msr.tbdString="true";xml.sequenceOffset="100"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="BYTE-ORDER" type="AR:BYTE-ORDER" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class BaseTypes::BaseTypeDirectDefinition -->
  <xsd:complexType name="BASE-TYPE-DIRECT-DEFINITION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This BaseType is defined directly (as opposite to a derived BaseType)</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="special__BASE-TYPE_directDefinition_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:BASE-TYPE-DIRECT-DEFINITION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class BaseTypes::BaseTypeIndirectDefinition -->
  <xsd:group name="BASE-TYPE-INDIRECT-DEFINITION">
    <xsd:annotation>
      <xsd:documentation>This BaseType is defined by referring to anotherone. This indirect definition allows to create alias base types.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="special__BASE-TYPE_indirectDefinition_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="BASE-TYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SW-BASE-TYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class BaseTypes::BaseTypeIndirectDefinition -->
  <xsd:complexType name="BASE-TYPE-INDIRECT-DEFINITION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This BaseType is defined by referring to anotherone. This indirect definition allows to create alias base types.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="special__BASE-TYPE_indirectDefinition_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:BASE-TYPE-INDIRECT-DEFINITION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class BaseTypes::BaseTypeMaxSize -->
  <xsd:group name="BASE-TYPE-MAX-SIZE">
    <xsd:annotation>
      <xsd:documentation>This is the maximum size of a BaseType in case of a dynamic BaseType.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="special__BASE-TYPE_maxSize_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="MAX-BASE-TYPE-SIZE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Describes the maximum length of the BaseType  in bits</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="BASE-TYPE_maxSize_TYPE__MAX-BASE-TYPE-SIZE";msr.tbdString="true";xml.sequenceOffset="80"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class BaseTypes::BaseTypeMaxSize -->
  <xsd:complexType name="BASE-TYPE-MAX-SIZE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This is the maximum size of a BaseType in case of a dynamic BaseType.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="special__BASE-TYPE_maxSize_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:BASE-TYPE-MAX-SIZE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class BaseTypes::BaseTypeSizeDefinition -->
  <xsd:group name="BASE-TYPE-SIZE-DEFINITION">
    <xsd:annotation>
      <xsd:documentation>This abstract class represents the possible methods of defining the size of a BaseType.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="special__BASE-TYPE_sizeDefintion_TYPE";msr.isOrgroup="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- element group for class Constants::BooleanLiteral -->
  <xsd:group name="BOOLEAN-LITERAL">
    <xsd:annotation>
      <xsd:documentation>Boolean constant expression.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="VALUE" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The Boolean value.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Constants::BooleanLiteral -->
  <xsd:complexType name="BOOLEAN-LITERAL" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Boolean constant expression.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:DATA-PROTOTYPE" />
      <xsd:group ref="AR:BOOLEAN-LITERAL" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUCParameterDefTemplate::BooleanParamDef -->
  <xsd:group name="BOOLEAN-PARAM-DEF">
    <xsd:annotation>
      <xsd:documentation>Configuration parameter type for Boolean. allowed values are true and false.</xsd:documentation>
      <xsd:appinfo source="tags">xml.sequenceOffset="0"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DEFAULT-VALUE" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Default value of the boolean configuration parameter.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUCParameterDefTemplate::BooleanParamDef -->
  <xsd:complexType name="BOOLEAN-PARAM-DEF" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Configuration parameter type for Boolean. allowed values are true and false.</xsd:documentation>
      <xsd:appinfo source="tags">xml.sequenceOffset="0"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PARAM-CONF-MULTIPLICITY" />
      <xsd:group ref="AR:COMMON-CONFIGURATION-ATTRIBUTES" />
      <xsd:group ref="AR:CONFIG-PARAMETER" />
      <xsd:group ref="AR:BOOLEAN-PARAM-DEF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Datatypes::BooleanType -->
  <xsd:group name="BOOLEAN-TYPE">
    <xsd:annotation>
      <xsd:documentation>This datatype represents a set containing the logical value true and false</xsd:documentation>
      <xsd:appinfo source="tags">java.instanceClass="java.lang.Boolean"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Datatypes::BooleanType -->
  <xsd:complexType name="BOOLEAN-TYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This datatype represents a set containing the logical value true and false</xsd:documentation>
      <xsd:appinfo source="tags">java.instanceClass="java.lang.Boolean"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PRIMITIVE-TYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUCDescriptionTemplate::BooleanValue -->
  <xsd:group name="BOOLEAN-VALUE">
    <xsd:annotation>
      <xsd:documentation>Representing a configuration value of definition type BooleanParamDef</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="VALUE" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Stores the value of the Boolean parameter.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUCDescriptionTemplate::BooleanValue -->
  <xsd:complexType name="BOOLEAN-VALUE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Representing a configuration value of definition type BooleanParamDef</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:PARAMETER-VALUE" />
      <xsd:group ref="AR:BOOLEAN-VALUE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class BasicElements::BootTime -->
  <xsd:group name="BOOT-TIME">
    <xsd:annotation>
      <xsd:documentation>Time information for ECU and PU startup.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="COLD-START-TIME" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Time it takes to come from a completely powered down state to the HWInit state in seconds.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="RESET-TIME" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Time it takes from the reset initiation to the HWInit state in seconds.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class BasicElements::BootTime -->
  <xsd:complexType name="BOOT-TIME" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Time information for ECU and PU startup.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:BOOT-TIME" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Inlines::Br -->
  <xsd:group name="BR">
    <xsd:annotation>
      <xsd:documentation>This element is the same as function here as in a HTML document i.e. it forces a line break.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__BR_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Inlines::Br -->
  <xsd:complexType name="BR" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This element is the same as function here as in a HTML document i.e. it forces a line break.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__BR_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class BswBehavior::BswBehavior -->
  <xsd:group name="BSW-BEHAVIOR">
    <xsd:annotation>
      <xsd:documentation>Specifies the behavior of a BSW module or a BSW cluster w.r.t. the code entities visible by the BSW Scheduler.
It is possible to have several different BswBehaviors referring to the same BswModuleDescription.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ENTITYS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="BSW-INTERRUPT-ENTITY" type="AR:BSW-INTERRUPT-ENTITY" />
            <xsd:element name="BSW-MODULE-ENTITY" type="AR:BSW-MODULE-ENTITY" />
            <xsd:element name="BSW-SCHEDULABLE-ENTITY" type="AR:BSW-SCHEDULABLE-ENTITY" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="EVENTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="BSW-CYCLIC-EVENT" type="AR:BSW-CYCLIC-EVENT" />
            <xsd:element name="BSW-SPORADIC-EVENT" type="AR:BSW-SPORADIC-EVENT" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="EXCLUSIVE-AREAS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="EXCLUSIVE-AREA" type="AR:EXCLUSIVE-AREA" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="MODULE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:BSW-MODULE-DESCRIPTION--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class BswBehavior::BswBehavior -->
  <xsd:complexType name="BSW-BEHAVIOR" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specifies the behavior of a BSW module or a BSW cluster w.r.t. the code entities visible by the BSW Scheduler.
It is possible to have several different BswBehaviors referring to the same BswModuleDescription.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:BSW-BEHAVIOR" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="BSW-BEHAVIOR--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="BSW-BEHAVIOR" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class BswBehavior::BswCyclicEvent -->
  <xsd:group name="BSW-CYCLIC-EVENT">
    <xsd:annotation>
      <xsd:documentation>A cyclically recurring BSW event. The cyclic activity has to be implemented by the BSW Scheduler.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CYCLE-TIME" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Requirement for the cycle time (in seconds) by which this event is triggered.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class BswBehavior::BswCyclicEvent -->
  <xsd:complexType name="BSW-CYCLIC-EVENT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A cyclically recurring BSW event. The cyclic activity has to be implemented by the BSW Scheduler.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:BSW-EVENT" />
      <xsd:group ref="AR:BSW-CYCLIC-EVENT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class BswBehavior::BswEvent -->
  <xsd:group name="BSW-EVENT">
    <xsd:annotation>
      <xsd:documentation>Defines an event which is used to trigger a schedulable entity of this BSW module or cluster. The event is local to the BSW module or cluster. The short name of the class instance is intended as an input to configure the required API of the BSW Scheduler.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="STARTS-ON-EVENT-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:BSW-SCHEDULABLE-ENTITY--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class BswImplementation::BswImplementation -->
  <xsd:group name="BSW-IMPLEMENTATION">
    <xsd:annotation>
      <xsd:documentation>Contains the implementation specific information in addition to the generic specification (BswModuleDescription and BswBehavior).
It is possible to have several different BswImplementations referring to the same BswBehavior.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="AR-MAJOR-VERSION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Major version number of AUTOSAR specification on which this implementation is based on.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="AR-MINOR-VERSION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Minor version number of AUTOSAR specification on which this implementation is based on.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="AR-PATCH-VERSION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Patch level version number of AUTOSAR specification on which this implementation is based on.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="BEHAVIOR-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:BSW-BEHAVIOR--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PRECONFIGURED-CONFIGURATION-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:MODULE-CONFIGURATION--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="RECOMMENDED-CONFIGURATION-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:MODULE-CONFIGURATION--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="REQUIRED-HW-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="REQUIRED-HW-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:HW-ELEMENT--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="VENDOR-API-INFIX" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>In driver modules which can be instantiated several times on a single ECU, BSW00347 requires that the name of APIs is extended by the VendorId and a vendor specific name. 
This parameter is used to specify the vendor specific name. In total, the implementation specific name is generated as follows:
&lt;ModuleName&gt;_&lt;VendorId&gt;_ &lt;VendorApiInfix&gt;&lt;Api name from SWS&gt;.

E.g.  assuming that the VendorId of the implementor is 123 and the implementer chose a VendorApiInfix of "v11r456" a api name Can_Write defined in the SWS will translate to Can_123_v11r456Write. 

This attribute is mandatory for all modules with upper multiplicity &gt; 1. It shall not be used for modules with upper multiplicity =1.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="VENDOR-SPECIFIC-MODULE-DEF-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:MODULE-DEF--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class BswImplementation::BswImplementation -->
  <xsd:complexType name="BSW-IMPLEMENTATION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Contains the implementation specific information in addition to the generic specification (BswModuleDescription and BswBehavior).
It is possible to have several different BswImplementations referring to the same BswBehavior.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:IMPLEMENTATION" />
      <xsd:group ref="AR:BSW-IMPLEMENTATION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="BSW-IMPLEMENTATION--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="BSW-IMPLEMENTATION" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class BswBehavior::BswInterruptEntity -->
  <xsd:group name="BSW-INTERRUPT-ENTITY">
    <xsd:annotation>
      <xsd:documentation>BSW module entity, which is designed to be triggered by an interrupt.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="INTERRUPT-CATEGORY" type="AR:BSW-INTERRUPT-CATEGORY" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Category of the interrupt</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="INTERRUPT-SOURCE" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Allows a textual documentation of the intended interrupt source.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class BswBehavior::BswInterruptEntity -->
  <xsd:complexType name="BSW-INTERRUPT-ENTITY" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>BSW module entity, which is designed to be triggered by an interrupt.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:BSW-MODULE-ENTITY" />
      <xsd:group ref="AR:BSW-INTERRUPT-ENTITY" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class BswInterfaces::BswModuleDependency -->
  <xsd:group name="BSW-MODULE-DEPENDENCY">
    <xsd:annotation>
      <xsd:documentation>This class collects the dependencies of a BSW module or cluster on a certain other BSW module in an abstract way.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="EXPECTED-CALLBACK-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="EXPECTED-CALLBACK-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:BSW-MODULE-ENTRY--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="REQUIRED-ENTRY-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="REQUIRED-ENTRY-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:BSW-MODULE-ENTRY--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SERVICE-ITEMS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="COM-MGR-USER-NEEDS" type="AR:COM-MGR-USER-NEEDS" />
            <xsd:element name="DIAGNOSTIC-COMMUNICATION-NEEDS" type="AR:DIAGNOSTIC-COMMUNICATION-NEEDS" />
            <xsd:element name="DIAGNOSTIC-EVENT-NEEDS" type="AR:DIAGNOSTIC-EVENT-NEEDS" />
            <xsd:element name="ECU-STATE-MGR-USER-NEEDS" type="AR:ECU-STATE-MGR-USER-NEEDS" />
            <xsd:element name="FUNCTION-INHIBITION-NEEDS" type="AR:FUNCTION-INHIBITION-NEEDS" />
            <xsd:element name="NV-BLOCK-NEEDS" type="AR:NV-BLOCK-NEEDS" />
            <xsd:element name="SERVICE-NEEDS" type="AR:SERVICE-NEEDS" />
            <xsd:element name="SUPERVISED-ENTITY-NEEDS" type="AR:SUPERVISED-ENTITY-NEEDS" />
            <xsd:element name="SWC-COM-MGR-USER-NEEDS" type="AR:SWC-COM-MGR-USER-NEEDS" />
            <xsd:element name="SWC-DIAGNOSTIC-COMMUNICATION-NEEDS" type="AR:SWC-DIAGNOSTIC-COMMUNICATION-NEEDS" />
            <xsd:element name="SWC-DIAGNOSTIC-EVENT-NEEDS" type="AR:SWC-DIAGNOSTIC-EVENT-NEEDS" />
            <xsd:element name="SWC-ECU-STATE-MGR-USER-NEEDS" type="AR:SWC-ECU-STATE-MGR-USER-NEEDS" />
            <xsd:element name="SWC-FUNCTION-INHIBITION-NEEDS" type="AR:SWC-FUNCTION-INHIBITION-NEEDS" />
            <xsd:element name="SWC-NV-BLOCK-NEEDS" type="AR:SWC-NV-BLOCK-NEEDS" />
            <xsd:element name="SWC-SUPERVISED-ENTITY-NEEDS" type="AR:SWC-SUPERVISED-ENTITY-NEEDS" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="TARGET-MODULE-ID" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>AUTOSAR identifier of the target module of which the dependencies are defined.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class BswInterfaces::BswModuleDependency -->
  <xsd:complexType name="BSW-MODULE-DEPENDENCY" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This class collects the dependencies of a BSW module or cluster on a certain other BSW module in an abstract way.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:BSW-MODULE-DEPENDENCY" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class BswOverview::BswModuleDescription -->
  <xsd:group name="BSW-MODULE-DESCRIPTION">
    <xsd:annotation>
      <xsd:documentation>Root element for the description of a single BSW module or BSW cluster.
In case it describes a BSW module, the short name of this element equals the name of the BSW module.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="BSW-MODULE-DEPENDENCYS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="BSW-MODULE-DEPENDENCY" type="AR:BSW-MODULE-DEPENDENCY" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="MODULE-ID" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Refers to the BSW Module Identifier defined by the AUTOSAR standard.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="OUTGOING-CALLBACK-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="OUTGOING-CALLBACK-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:BSW-MODULE-ENTRY--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PROVIDED-ENTRY-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="PROVIDED-ENTRY-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:BSW-MODULE-ENTRY--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class BswOverview::BswModuleDescription -->
  <xsd:complexType name="BSW-MODULE-DESCRIPTION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Root element for the description of a single BSW module or BSW cluster.
In case it describes a BSW module, the short name of this element equals the name of the BSW module.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:BSW-MODULE-DESCRIPTION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="BSW-MODULE-DESCRIPTION--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="BSW-MODULE-DESCRIPTION" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class BswBehavior::BswModuleEntity -->
  <xsd:group name="BSW-MODULE-ENTITY">
    <xsd:annotation>
      <xsd:documentation>Specifies the smallest code fragment which can be described for a BSW module or cluster within AUTOSAR.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ACTIVATION-POINT-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="ACTIVATION-POINT-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:BSW-SPORADIC-EVENT--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="CALLED-ENTRY-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="CALLED-ENTRY-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:BSW-MODULE-ENTRY--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="CAN-ENTER-EXCLUSIVE-AREA-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="CAN-ENTER-EXCLUSIVE-AREA-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:EXCLUSIVE-AREA--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="CANCELLATION-POINT-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="CANCELLATION-POINT-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:BSW-SPORADIC-EVENT--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="IMPLEMENTED-ENTRY-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:BSW-MODULE-ENTRY--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class BswBehavior::BswModuleEntity -->
  <xsd:complexType name="BSW-MODULE-ENTITY" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specifies the smallest code fragment which can be described for a BSW module or cluster within AUTOSAR.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:BSW-MODULE-ENTITY" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="BSW-MODULE-ENTITY--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="BSW-INTERRUPT-ENTITY" />
      <xsd:enumeration value="BSW-MODULE-ENTITY" />
      <xsd:enumeration value="BSW-SCHEDULABLE-ENTITY" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class BswInterfaces::BswModuleEntry -->
  <xsd:group name="BSW-MODULE-ENTRY">
    <xsd:annotation>
      <xsd:documentation>This class represents a single API entry (C-function prototype) into the BSW module or cluster.

The name of the C-function is equal to the short name of this element with one exception: In case of multiple instances of a module on the same CPU, special rules for "infixes" apply, see description of class BswImplementation.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CALL-TYPE" type="AR:BSW-CALL-TYPE" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>the type of call associated with this service</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="EXECUTION-CONTEXT" type="AR:BSW-EXECUTION-CONTEXT" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Specifies the excution context which is required (in case of entries into this module) or guaranteed (in case of entries called from this module) for this service.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="IS-SYNCHRONOUS" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>true: This calls a synchronous service, i.e. the service is completed when the call returns.
false: The service (on semantical level) may not be complete when the call returns.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SERVICE-ID" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Refers to the service identifier of the Standardized Interfaces of AUTOSAR basic software.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class BswInterfaces::BswModuleEntry -->
  <xsd:complexType name="BSW-MODULE-ENTRY" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This class represents a single API entry (C-function prototype) into the BSW module or cluster.

The name of the C-function is equal to the short name of this element with one exception: In case of multiple instances of a module on the same CPU, special rules for "infixes" apply, see description of class BswImplementation.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:SW-SERVICE" />
      <xsd:group ref="AR:BSW-MODULE-ENTRY" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="BSW-MODULE-ENTRY--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="BSW-MODULE-ENTRY" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class BswBehavior::BswSchedulableEntity -->
  <xsd:group name="BSW-SCHEDULABLE-ENTITY">
    <xsd:annotation>
      <xsd:documentation>BSW module entity, which is designed for control by the BSW Scheduler. It implements a so-called "main" function.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class BswBehavior::BswSchedulableEntity -->
  <xsd:complexType name="BSW-SCHEDULABLE-ENTITY" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>BSW module entity, which is designed for control by the BSW Scheduler. It implements a so-called "main" function.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:BSW-MODULE-ENTITY" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="BSW-SCHEDULABLE-ENTITY--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="BSW-SCHEDULABLE-ENTITY" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class BswBehavior::BswSporadicEvent -->
  <xsd:group name="BSW-SPORADIC-EVENT">
    <xsd:annotation>
      <xsd:documentation>A BSW event, which can happen sporadically. The event is activated/cancelled by explicit calls from the module to the BSW Scheduler. There a two purposes for such an event:
- cause a context switch, e.g. from an ISR context into a task context
- implement a time delay</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DELAY-TIME" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Requirement for the delay time (in seconds) after which this event is triggered. The delay is counted from the activation of this event by a BswModuleEntitiy until the actual triggering of another BswModuleEntity associated by the event.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class BswBehavior::BswSporadicEvent -->
  <xsd:complexType name="BSW-SPORADIC-EVENT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A BSW event, which can happen sporadically. The event is activated/cancelled by explicit calls from the module to the BSW Scheduler. There a two purposes for such an event:
- cause a context switch, e.g. from an ISR context into a task context
- implement a time delay</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:BSW-EVENT" />
      <xsd:group ref="AR:BSW-SPORADIC-EVENT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="BSW-SPORADIC-EVENT--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="BSW-SPORADIC-EVENT" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class Peripherals::Buffer -->
  <xsd:group name="BUFFER">
    <xsd:annotation>
      <xsd:documentation>Description of a  buffer. It is used to describe input and output buffers.
Buffers can also be configurable direction.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="NUMBER" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The amount of buffers with the attributes size and type.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SIZE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The size of the Buffer.
Unit: Byte</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="TYPE" type="AR:COMMUNICATION-DIRECTION-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Either input, output or configurable buffer.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Peripherals::Buffer -->
  <xsd:complexType name="BUFFER" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Description of a  buffer. It is used to describe input and output buffers.
Buffers can also be configurable direction.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:BUFFER" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ECUElectronics::BusTermination -->
  <xsd:group name="BUS-TERMINATION">
    <xsd:annotation>
      <xsd:documentation>In order to avoid signal reflection and oscillation of the Technical Signal represen-tation the impedance on communication lines have to be defined and matched at the signal destination and the signal source.
Some examples:
A High-speed CAN network with a twisted pair cable works optimal with an overall impedance of 60 Ohms represented by a 120 Ohm resistor in the ECU at the begin-ning of the network and 120 Ohm in the ECU at the end of a linear network topology.
For Low-speed CAN networks in many cases termination resistors of 820 Ohm each are distributed on several ECUs to get good balance between system scalability and signal integrity in real networks without a fixed network topology. The lower bandwidth can tolerate some impedance mismatch.
For LIN networks recessive termination is used: The inactive bus signal level is defined by resistors tied to a defined voltage level.
An important attribute for communication lines is the presence of a termination resistor and the value of this resistor.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ACTIVE-SWITCHABLE" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Switchable termination describes a technology were the termination resistors can be switched or changed by extra hardware and therefore is under control of software. Main scope of a switchable termination is to adopt the termination of an individual ECU to the network topology of a specific car, e. g modules for extra car options can use this method to be incorporated in a wide range of different car types. The active termination is described by the values for each termination value. E.g. 120, 820, 12k. No termination is represented by values greater than 100 k. The attributes value and switchable are exclusive to each other.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="CHOKE" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>To improve the signal integrity on communication busses with a differential electrical signal representation on the physical layer, common mode chokes are used. They suppress common mode DC noise on CAN, FlexRay and Ethernet networks. Depending on the network topology common mode chokes of an ECU have to be taken in to account when adding ECUs to a network during design phase. Typically chokes are used on CAN, FlexRay, LVDS.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="EMC-FILTER" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>To improve the EMC behaviour of communication busses common dedicated EMC Filters are used. They suppress frequencies outside the range, which is needed for the communication of the specific bus
E.g. some small capacitors in parallel to ground, resistors and inductivities in series are added to the bus lines in order to prevent the higher harmonics stimulated by the communication on the network
The information about the termination is used with in the system configuration process, where the placement of an ECU within a car architecture is generated.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SPLIT" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Describe a technology were the termination is split in to individual resistors with a  capacitive coupling to ground. This technology improves the signal quality.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="VALUE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Describe the nominal Value of the termination resistor at the ECU as seen from the communication network.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUElectronics::BusTermination -->
  <xsd:complexType name="BUS-TERMINATION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>In order to avoid signal reflection and oscillation of the Technical Signal represen-tation the impedance on communication lines have to be defined and matched at the signal destination and the signal source.
Some examples:
A High-speed CAN network with a twisted pair cable works optimal with an overall impedance of 60 Ohms represented by a 120 Ohm resistor in the ECU at the begin-ning of the network and 120 Ohm in the ECU at the end of a linear network topology.
For Low-speed CAN networks in many cases termination resistors of 820 Ohm each are distributed on several ECUs to get good balance between system scalability and signal integrity in real networks without a fixed network topology. The lower bandwidth can tolerate some impedance mismatch.
For LIN networks recessive termination is used: The inactive bus signal level is defined by resistors tied to a defined voltage level.
An important attribute for communication lines is the presence of a termination resistor and the value of this resistor.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:BUS-TERMINATION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ByteOrder::ByteOrder -->
  <xsd:group name="BYTE-ORDER">
    <xsd:annotation>
      <xsd:documentation>This element specifies the byte order of the parent element. The byte order is defined with the attribute TYPE. Possible values are:

* MOST-SIGNIFICANT-BYTE-FIRST

* MOST-SIGNIFICANT-BYTE-LAST</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="BYTE-ORDER";msr.id="type__BYTE-ORDER_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CONTENT" type="AR:BYTE-ORDER-ENUM" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ByteOrder::ByteOrder -->
  <xsd:complexType name="BYTE-ORDER">
    <xsd:annotation>
      <xsd:documentation>This element specifies the byte order of the parent element. The byte order is defined with the attribute TYPE. Possible values are:

* MOST-SIGNIFICANT-BYTE-FIRST

* MOST-SIGNIFICANT-BYTE-LAST</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="BYTE-ORDER";msr.id="type__BYTE-ORDER_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="AR:BYTE-ORDER-ENUM">
        <xsd:attributeGroup ref="AR:AR-OBJECT" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <!-- element group for class Peripherals::CCU -->
  <xsd:group name="CCU">
    <xsd:annotation>
      <xsd:documentation>The CCU is a special kind of a timer, which has the capability of counting and comparing external signals. The timer is equipped with some extra registers and comparators in order to measure time or frequency.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="MODE" type="AR:CCU-MODE-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>A Capture and Compare peripheral can be configured to operate either in capture or compare mode.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Peripherals::CCU -->
  <xsd:complexType name="CCU" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The CCU is a special kind of a timer, which has the capability of counting and comparing external signals. The timer is equipped with some extra registers and comparators in order to measure time or frequency.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-ELEMENT" />
      <xsd:group ref="AR:PERIPHERAL" />
      <xsd:group ref="AR:GENERAL-PURPOSE-TIMER" />
      <xsd:group ref="AR:CCU" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ApplicationAttributes::CalibrationPortAnnotation -->
  <xsd:group name="CALIBRATION-PORT-ANNOTATION">
    <xsd:annotation>
      <xsd:documentation>Annotation to a port used for calibration regarding a certain CalprmElement.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CALPRM-ELEMENT-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:CALPRM-ELEMENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ApplicationAttributes::CalibrationPortAnnotation -->
  <xsd:complexType name="CALIBRATION-PORT-ANNOTATION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Annotation to a port used for calibration regarding a certain CalprmElement.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:GENERAL-ANNOTATION" />
      <xsd:group ref="AR:CALIBRATION-PORT-ANNOTATION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Characteristic::CalprmAccess -->
  <xsd:group name="CALPRM-ACCESS">
    <xsd:sequence>
      <xsd:element name="CALPRM-ACCESS-IREF" type="AR:CALPRM-ACCESS--CALPRM-ELEMENT-PROTOTYPE-IREF" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Characteristic::CalprmAccess -->
  <xsd:complexType name="CALPRM-ACCESS" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:CALPRM-ACCESS" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class _instanceRef::CalprmAccess_CalprmElementPrototype -->
  <xsd:group name="CALPRM-ACCESS--CALPRM-ELEMENT-PROTOTYPE-IREF">
    <xsd:sequence>
      <xsd:element name="COMPONENT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMPONENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PORT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:PORT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="CALPRM-ELEMENT-PROTOTYPE-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:CALPRM-ELEMENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::CalprmAccess_CalprmElementPrototype -->
  <xsd:complexType name="CALPRM-ACCESS--CALPRM-ELEMENT-PROTOTYPE-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:CALPRM-ACCESS--CALPRM-ELEMENT-PROTOTYPE-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Components::CalprmComponentType -->
  <xsd:group name="CALPRM-COMPONENT-TYPE">
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Components::CalprmComponentType -->
  <xsd:complexType name="CALPRM-COMPONENT-TYPE" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:COMPONENT-TYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Characteristic::CalprmElementPrototype -->
  <xsd:group name="CALPRM-ELEMENT-PROTOTYPE">
    <xsd:annotation>
      <xsd:documentation>In the context of a component there is no typed re-use of CalprmElementPrototype entities</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Characteristic::CalprmElementPrototype -->
  <xsd:complexType name="CALPRM-ELEMENT-PROTOTYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>In the context of a component there is no typed re-use of CalprmElementPrototype entities</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:DATA-PROTOTYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="CALPRM-ELEMENT-PROTOTYPE--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="CALPRM-ELEMENT-PROTOTYPE" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class Characteristic::CalprmInterface -->
  <xsd:group name="CALPRM-INTERFACE">
    <xsd:sequence>
      <xsd:element name="CALPRM-ELEMENTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="CALPRM-ELEMENT-PROTOTYPE" type="AR:CALPRM-ELEMENT-PROTOTYPE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Characteristic::CalprmInterface -->
  <xsd:complexType name="CALPRM-INTERFACE" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PORT-INTERFACE" />
      <xsd:group ref="AR:CALPRM-INTERFACE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class CanTopology::CanCluster -->
  <xsd:group name="CAN-CLUSTER">
    <xsd:annotation>
      <xsd:documentation>CAN specific attributes</xsd:documentation>
      <xsd:appinfo source="tags">xml.namePlural="CAN-BUSES"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="NM-BUS-LOAD-REDUCTION-ACTIVE" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>It determines if bus load reduction for the respective NM channel is active or not. 
True: active
False: inactive</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="NM-BUS-LOAD-REDUCTION-ENABLED" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>switch for enabling busload reduction support.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="NM-REPEAT-MESSAGE-STATE-TIME" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>It defines how long the NM shall stay in the Repeat Message State (in seconds)</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="NM-TIMEOUT-TIME" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Network Timeout for NM-Messages. It denotes the time (in seconds) how long the NM shall stay in the Network Mode before transition into Prepare Bus-Sleep Mode shall take place. It shall be equal for all nodes in the cluster.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="NM-WAIT-BUS-SLEEP-TIME" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Timeout for bus calm down phase. It denotes the time (in seconds) how long the NM shall stay in the Prepare Bus-Sleep Mode before transition into Bus-Sleep Mode shall take place. It shall be equal for all nodes in the cluster.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class CanTopology::CanCluster -->
  <xsd:complexType name="CAN-CLUSTER" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>CAN specific attributes</xsd:documentation>
      <xsd:appinfo source="tags">xml.namePlural="CAN-BUSES"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:COMMUNICATION-CLUSTER" />
      <xsd:group ref="AR:CAN-CLUSTER" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class CanTopology::CanCommunicationController -->
  <xsd:group name="CAN-COMMUNICATION-CONTROLLER">
    <xsd:annotation>
      <xsd:documentation>CAN bus specific communication port attributes.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="NUMBER-OF-SAMPLES" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Number of samples. Possible values are 1 or 3.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PROPAGATION-DELAY" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>propagation Delay in seconds</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SYNC-JUMP-WIDTH" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The number of quanta in the Synchronization Jump Width, SJW</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="TIME-SEG-0" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The number of quanta before the sampling point</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="TIME-SEG-1" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The number of quanta after the sampling point</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class CanTopology::CanCommunicationController -->
  <xsd:complexType name="CAN-COMMUNICATION-CONTROLLER" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>CAN bus specific communication port attributes.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:COMMUNICATION-CONTROLLER" />
      <xsd:group ref="AR:CAN-COMMUNICATION-CONTROLLER" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class CanCommunication::CanFrameTriggering -->
  <xsd:group name="CAN-FRAME-TRIGGERING">
    <xsd:annotation>
      <xsd:documentation>CAN specific attributes to the FrameTriggering</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CAN-ADDRESSING-MODE" type="AR:CAN-ADRESSING-MODE-TYPE" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The CAN protocol supports two types of frame formats. The standard frame format uses 11-bit identifiers and is defined in the CAN specification 2.0 A. Additionally the extended frame format allows 29-bit identifiers and is defined in the CAN specification 2.0 B.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="IDENTIFIER" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>To describe a frames identifier on the communication system, usualy with a fixed identifierValue.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class CanCommunication::CanFrameTriggering -->
  <xsd:complexType name="CAN-FRAME-TRIGGERING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>CAN specific attributes to the FrameTriggering</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:FRAME-TRIGGERING" />
      <xsd:group ref="AR:CAN-FRAME-TRIGGERING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class TransportProtocols::CanTpConnectionChannel -->
  <xsd:group name="CAN-TP-CONNECTION-CHANNEL">
    <xsd:annotation>
      <xsd:documentation>A connection channel represents an internal path for the transmission or reception of a Pdu via CanTp
and describes the the sender and the receiver of this particular communication.

The CanTp module routes a Pdu through the connection channel</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ADDRESSING-FORMAT" type="AR:CAN-TP-ADDRESSING-FORMAT-TYPE" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Declares which communication addressing mode is supported.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="BLOCK-SIZE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The maximum number of N-PDUs the CanTp receiver allows the sender to send, before waiting for an authorization to continue transmission of the following N-PDUs. For further details on this parameter value see ISO 15765-2 specification.

Note: For reasons of buffer length, the CAN Transport Layer can adapt the BS value within the limit of this maximum BS</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="DATA-PDU-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:N-PDU--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="FLOW-CONTROL-PDU-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:N-PDU--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="MINIMUM-SEPARATION-TIME" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This attribute defines the minimum amount of time (separation Time) between two succeeding CFs. Specified in seconds.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MULTICAST-ADDRESSING" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Specifies the communication type:

true: 1:n communication (Functional)
false: 1:1 communication (Physical)</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PADDING-ACTIVATION" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines if the receive frame uses padding or not.

true:
The N-PDU received uses padding for SF, FC and the last CF. (N-PDU length is always 8 bytes)

false:
The N-PDU received does not use padding for SF, CF and the last CF. (N-PDU length is dynamic)</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SOURCE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMMUNICATION-CONNECTOR--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="TARGET-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMMUNICATION-CONNECTOR--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="TP-SDU-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:I-PDU--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class TransportProtocols::CanTpConnectionChannel -->
  <xsd:complexType name="CAN-TP-CONNECTION-CHANNEL" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A connection channel represents an internal path for the transmission or reception of a Pdu via CanTp
and describes the the sender and the receiver of this particular communication.

The CanTp module routes a Pdu through the connection channel</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:CAN-TP-CONNECTION-CHANNEL" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Constants::CharLiteral -->
  <xsd:group name="CHAR-LITERAL">
    <xsd:annotation>
      <xsd:documentation>Character constant description.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="VALUE" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The character value (a string of length 1).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Constants::CharLiteral -->
  <xsd:complexType name="CHAR-LITERAL" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Character constant description.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:DATA-PROTOTYPE" />
      <xsd:group ref="AR:CHAR-LITERAL" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Datatypes::CharType -->
  <xsd:group name="CHAR-TYPE">
    <xsd:annotation>
      <xsd:documentation>This represents a character belonging to the character-set specified in the encoding.  The semantics are built-in into this datatype.</xsd:documentation>
      <xsd:appinfo source="tags">java.instanceClass="java.lang.Character"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ENCODING" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Specification of character encoding, e.g. ISO-8859-1</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Datatypes::CharType -->
  <xsd:complexType name="CHAR-TYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This represents a character belonging to the character-set specified in the encoding.  The semantics are built-in into this datatype.</xsd:documentation>
      <xsd:appinfo source="tags">java.instanceClass="java.lang.Character"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PRIMITIVE-TYPE" />
      <xsd:group ref="AR:CHAR-TYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUCParameterDefTemplate::ChoiceContainerDef -->
  <xsd:group name="CHOICE-CONTAINER-DEF">
    <xsd:annotation>
      <xsd:documentation>Used to define configuration containers that provide a choice between several ParamConfContainerDef. But in the actual ECU Configuration Description only one instance from the choice list will be present (depending on the multiplicites given).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CHOICES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="PARAM-CONF-CONTAINER-DEF" type="AR:PARAM-CONF-CONTAINER-DEF" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUCParameterDefTemplate::ChoiceContainerDef -->
  <xsd:complexType name="CHOICE-CONTAINER-DEF" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Used to define configuration containers that provide a choice between several ParamConfContainerDef. But in the actual ECU Configuration Description only one instance from the choice list will be present (depending on the multiplicites given).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PARAM-CONF-MULTIPLICITY" />
      <xsd:group ref="AR:CONTAINER-DEF" />
      <xsd:group ref="AR:CHOICE-CONTAINER-DEF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUCParameterDefTemplate::ChoiceReferenceParamDef -->
  <xsd:group name="CHOICE-REFERENCE-PARAM-DEF">
    <xsd:annotation>
      <xsd:documentation>Specify alternative references where in the ECU Configuration description only one of the specified references will actually be used.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DESTINATION-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="DESTINATION-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:PARAM-CONF-CONTAINER-DEF--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUCParameterDefTemplate::ChoiceReferenceParamDef -->
  <xsd:complexType name="CHOICE-REFERENCE-PARAM-DEF" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specify alternative references where in the ECU Configuration description only one of the specified references will actually be used.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PARAM-CONF-MULTIPLICITY" />
      <xsd:group ref="AR:COMMON-CONFIGURATION-ATTRIBUTES" />
      <xsd:group ref="AR:CHOICE-REFERENCE-PARAM-DEF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Communication::ClientComSpec -->
  <xsd:group name="CLIENT-COM-SPEC">
    <xsd:annotation>
      <xsd:documentation>Client specific communication attributes (R-Port and client-server interface).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="OPERATION-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:OPERATION-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Communication::ClientComSpec -->
  <xsd:complexType name="CLIENT-COM-SPEC" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Client specific communication attributes (R-Port and client-server interface).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:CLIENT-COM-SPEC" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class DataMapping::ClientIdMapping -->
  <xsd:group name="CLIENT-ID-MAPPING">
    <xsd:annotation>
      <xsd:documentation>In case of a server on one ECU with multiple clients on other ECUs, the client server communication shall use different unique COM signals and signal groups for each client to allow the identification of the client associated with each system signal.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SYSTEM-SIGNAL-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SYSTEM-SIGNAL--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DataMapping::ClientIdMapping -->
  <xsd:complexType name="CLIENT-ID-MAPPING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>In case of a server on one ECU with multiple clients on other ECUs, the client server communication shall use different unique COM signals and signal groups for each client to allow the identification of the client associated with each system signal.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:CLIENT-ID-MAPPING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class DataMapping::ClientServerArrayElementMapping -->
  <xsd:group name="CLIENT-SERVER-ARRAY-ELEMENT-MAPPING">
    <xsd:annotation>
      <xsd:documentation>The ArrayElement may be a primitive one or a composite one. If the element is primitive, it will be mapped to the "SystemSignal" (multiplicity 1).
If the element is composite, there will be no mapping to the "SystemSignal" (multiplicity 0). In this case the "ArrayElementMapping" Element will aggregate the "TypeMapping" Element. In that way also the composite datatypes can be mapped to SystemSignals. 

Regardless whether composite or primitive array element is mapped the indexed array element always needs to be specified.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="COMPLEX-TYPE-MAPPING" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="1">
            <xsd:element name="CLIENT-SERVER-ARRAY-TYPE-MAPPING" type="AR:CLIENT-SERVER-ARRAY-TYPE-MAPPING" />
            <xsd:element name="CLIENT-SERVER-RECORD-TYPE-MAPPING" type="AR:CLIENT-SERVER-RECORD-TYPE-MAPPING" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="INDEXED-ARRAY-ELEMENT" type="AR:INDEXED-ARRAY-ELEMENT" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SIGNAL-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SYSTEM-SIGNAL--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DataMapping::ClientServerArrayElementMapping -->
  <xsd:complexType name="CLIENT-SERVER-ARRAY-ELEMENT-MAPPING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The ArrayElement may be a primitive one or a composite one. If the element is primitive, it will be mapped to the "SystemSignal" (multiplicity 1).
If the element is composite, there will be no mapping to the "SystemSignal" (multiplicity 0). In this case the "ArrayElementMapping" Element will aggregate the "TypeMapping" Element. In that way also the composite datatypes can be mapped to SystemSignals. 

Regardless whether composite or primitive array element is mapped the indexed array element always needs to be specified.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:CLIENT-SERVER-ARRAY-ELEMENT-MAPPING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class DataMapping::ClientServerArrayTypeMapping -->
  <xsd:group name="CLIENT-SERVER-ARRAY-TYPE-MAPPING">
    <xsd:annotation>
      <xsd:documentation>If the compositeType is an Array, the "ArrayTypeMapping" will be used.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ARRAY-ELEMENT-MAPPINGS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="CLIENT-SERVER-ARRAY-ELEMENT-MAPPING" type="AR:CLIENT-SERVER-ARRAY-ELEMENT-MAPPING" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DataMapping::ClientServerArrayTypeMapping -->
  <xsd:complexType name="CLIENT-SERVER-ARRAY-TYPE-MAPPING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>If the compositeType is an Array, the "ArrayTypeMapping" will be used.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:CLIENT-SERVER-COMPOSITE-TYPE-MAPPING" />
      <xsd:group ref="AR:CLIENT-SERVER-ARRAY-TYPE-MAPPING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class DataMapping::ClientServerCompositeTypeMapping -->
  <xsd:group name="CLIENT-SERVER-COMPOSITE-TYPE-MAPPING">
    <xsd:annotation>
      <xsd:documentation>Two mappings exist for the composite data types: "ArrayTypeMapping" and "RecordTypeMapping".
In both, a primitive datatype will be mapped to a system signal. 

But it is also possible to combine the arrays and the records, so that an "array" could be an element of a "record" and in the same manner a "record" could be an element of an "array". Nesting these data types is also possible.

If an element of a composite data type is again a composite one, the "CompositeTypeMapping" element will be used one more time (aggregation between the ArrayElementMapping and CompositeTypeMapping or aggregation between the RecordElementMapping and CompositeTypeMapping).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ARGUMENT-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:ARGUMENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class PortInterface::ClientServerInterface -->
  <xsd:group name="CLIENT-SERVER-INTERFACE">
    <xsd:annotation>
      <xsd:documentation>A client/server interface declares a number of operations that can be invoked on a server by a client.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="OPERATIONS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="OPERATION-PROTOTYPE" type="AR:OPERATION-PROTOTYPE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="POSSIBLE-ERRORS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="APPLICATION-ERROR" type="AR:APPLICATION-ERROR" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class PortInterface::ClientServerInterface -->
  <xsd:complexType name="CLIENT-SERVER-INTERFACE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A client/server interface declares a number of operations that can be invoked on a server by a client.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PORT-INTERFACE" />
      <xsd:group ref="AR:CLIENT-SERVER-INTERFACE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class DataMapping::ClientServerPrimitiveTypeMapping -->
  <xsd:group name="CLIENT-SERVER-PRIMITIVE-TYPE-MAPPING">
    <xsd:annotation>
      <xsd:documentation>Mapping of an argument with a primitive datatype to a signal.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ARGUMENT-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:ARGUMENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SYSTEM-SIGNAL-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SYSTEM-SIGNAL--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DataMapping::ClientServerPrimitiveTypeMapping -->
  <xsd:complexType name="CLIENT-SERVER-PRIMITIVE-TYPE-MAPPING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Mapping of an argument with a primitive datatype to a signal.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:CLIENT-SERVER-PRIMITIVE-TYPE-MAPPING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class DataMapping::ClientServerRecordElementMapping -->
  <xsd:group name="CLIENT-SERVER-RECORD-ELEMENT-MAPPING">
    <xsd:annotation>
      <xsd:documentation>Mapping of a primitive record element to a SystemSignal. 

If the element is composite, there will be no mapping (multiplicity 0). In this case the "RecordElementMapping" Element will aggregate the "TypeMapping" Element. In that way also the composite datatypes can be mapped to SystemSignals. 

Regardless whether composite or primitive record element is mapped the record element always needs to be specified.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="COMPLEX-TYPE-MAPPING" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="1">
            <xsd:element name="CLIENT-SERVER-ARRAY-TYPE-MAPPING" type="AR:CLIENT-SERVER-ARRAY-TYPE-MAPPING" />
            <xsd:element name="CLIENT-SERVER-RECORD-TYPE-MAPPING" type="AR:CLIENT-SERVER-RECORD-TYPE-MAPPING" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="RECORD-ELEMENT-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:RECORD-ELEMENT--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SIGNAL-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SYSTEM-SIGNAL--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DataMapping::ClientServerRecordElementMapping -->
  <xsd:complexType name="CLIENT-SERVER-RECORD-ELEMENT-MAPPING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Mapping of a primitive record element to a SystemSignal. 

If the element is composite, there will be no mapping (multiplicity 0). In this case the "RecordElementMapping" Element will aggregate the "TypeMapping" Element. In that way also the composite datatypes can be mapped to SystemSignals. 

Regardless whether composite or primitive record element is mapped the record element always needs to be specified.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:CLIENT-SERVER-RECORD-ELEMENT-MAPPING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class DataMapping::ClientServerRecordTypeMapping -->
  <xsd:group name="CLIENT-SERVER-RECORD-TYPE-MAPPING">
    <xsd:annotation>
      <xsd:documentation>If the compositeType is a Record, the "RecordTypeMapping" will be used.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="RECORD-ELEMENT-MAPPINGS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="CLIENT-SERVER-RECORD-ELEMENT-MAPPING" type="AR:CLIENT-SERVER-RECORD-ELEMENT-MAPPING" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DataMapping::ClientServerRecordTypeMapping -->
  <xsd:complexType name="CLIENT-SERVER-RECORD-TYPE-MAPPING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>If the compositeType is a Record, the "RecordTypeMapping" will be used.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:CLIENT-SERVER-COMPOSITE-TYPE-MAPPING" />
      <xsd:group ref="AR:CLIENT-SERVER-RECORD-TYPE-MAPPING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class DataMapping::ClientServerToSignalGroupMapping -->
  <xsd:group name="CLIENT-SERVER-TO-SIGNAL-GROUP-MAPPING">
    <xsd:annotation>
      <xsd:documentation>Mapping of client server operation arguments to signals of a signal group. Arguments with a primitive datatype will be mapped via the "ClientServerPrimitiveTypeMapping" element. 
Arguments with composite datatypes will be mapped via the "CompositeTypeMapping" element.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="APPLICATION-ERRORS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="APPLICATION-ERROR-MAPPING" type="AR:APPLICATION-ERROR-MAPPING" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="CLIENT-ID" type="AR:CLIENT-ID-MAPPING" minOccurs="0" maxOccurs="1" />
      <xsd:element name="COMPOSITE-TYPE-MAPPINGS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="CLIENT-SERVER-ARRAY-TYPE-MAPPING" type="AR:CLIENT-SERVER-ARRAY-TYPE-MAPPING" />
            <xsd:element name="CLIENT-SERVER-RECORD-TYPE-MAPPING" type="AR:CLIENT-SERVER-RECORD-TYPE-MAPPING" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="EMPTY-SIGNAL" type="AR:EMPTY-SIGNAL-MAPPING" minOccurs="0" maxOccurs="1" />
      <xsd:element name="MAPPED-OPERATION-IREF" type="AR:CLIENT-SERVER-TO-SIGNAL-GROUP-MAPPING--MAPPED-OPERATION-IREF" minOccurs="0" maxOccurs="1" />
      <xsd:element name="PRIMITIVE-TYPE-MAPPINGS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="CLIENT-SERVER-PRIMITIVE-TYPE-MAPPING" type="AR:CLIENT-SERVER-PRIMITIVE-TYPE-MAPPING" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="REQUEST-GROUP-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SYSTEM-SIGNAL-GROUP--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="RESPONSE-GROUP-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SYSTEM-SIGNAL-GROUP--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SEQUENCE-COUNTER" type="AR:SEQUENCE-COUNTER-MAPPING" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DataMapping::ClientServerToSignalGroupMapping -->
  <xsd:complexType name="CLIENT-SERVER-TO-SIGNAL-GROUP-MAPPING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Mapping of client server operation arguments to signals of a signal group. Arguments with a primitive datatype will be mapped via the "ClientServerPrimitiveTypeMapping" element. 
Arguments with composite datatypes will be mapped via the "CompositeTypeMapping" element.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:CLIENT-SERVER-TO-SIGNAL-GROUP-MAPPING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class _instanceRef::ClientServerToSignalGroupMapping_mappedOperation -->
  <xsd:group name="CLIENT-SERVER-TO-SIGNAL-GROUP-MAPPING--MAPPED-OPERATION-IREF">
    <xsd:sequence>
      <xsd:element name="COMPOSITION-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SOFTWARE-COMPOSITION--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="COMPONENT-PROTOTYPE-REF" minOccurs="0" maxOccurs="unbounded">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMPONENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PORT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:PORT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="OPERATION-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:OPERATION-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::ClientServerToSignalGroupMapping_mappedOperation -->
  <xsd:complexType name="CLIENT-SERVER-TO-SIGNAL-GROUP-MAPPING--MAPPED-OPERATION-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:CLIENT-SERVER-TO-SIGNAL-GROUP-MAPPING--MAPPED-OPERATION-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ECUElectronics::Clock -->
  <xsd:group name="CLOCK">
    <xsd:annotation>
      <xsd:documentation>The clock delivers the time for the PU and other HW Elements on the ECU.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ADJUSTABLE" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines if the clock is adjustable from software.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="CLOCK-JITTER" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The short-term deviation of the nominal frequency to the real frequency. Jitter is influenced by the circuitry itself, voltage spikes etc. Jitter is critical for communication elements. PLL need/generate jitter for operation. Therefore communication interfaces should operate from an oscillator e.g. quartz directly or use only divider, not a PLL, as clock source. Using PLL for communication interfaces is a very common source for problems in ECU test and integration.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="CLOCK-STARTUP-TIME" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The time the clock generation needs to deliver a stable and valid signal.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="CLOCK-TOLERANCE" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The long-term deviation of the nominal frequency to the real frequency. Influenced by manufacturing, layout, temperature, external components and voltage. Tolerances are critical for timer application and time synchronisation.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="FREQUENCY" type="AR:FREQUENCY-RANGE" minOccurs="0" maxOccurs="1" />
      <xsd:element name="OSCILLATOR-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="OSCILLATOR-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:OSCILLATOR--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="TYPE" type="AR:CLOCK-TYPE-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines the type of the clock signal.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUElectronics::Clock -->
  <xsd:complexType name="CLOCK" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The clock delivers the time for the PU and other HW Elements on the ECU.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-ELEMENT" />
      <xsd:group ref="AR:ECU-ELECTRONICS" />
      <xsd:group ref="AR:CLOCK" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="CLOCK--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="CLOCK" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class Implementation::Code -->
  <xsd:group name="CODE">
    <xsd:annotation>
      <xsd:documentation>A generic code descriptor.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="TYPE" type="AR:CODE-TYPE-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The type of described code.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="XFILES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="XFILE" type="AR:XFILE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Implementation::Code -->
  <xsd:complexType name="CODE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A generic code descriptor.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:CODE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ServiceNeeds::ComMgrUserNeeds -->
  <xsd:group name="COM-MGR-USER-NEEDS">
    <xsd:annotation>
      <xsd:documentation>Specifies the abstract needs on the configuration of the Communication Manager for one "user".</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="MAX-COMM-MODE" type="AR:MAX-COMM-MODE-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Maximum communication mode requested by this ComM user</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ServiceNeeds::ComMgrUserNeeds -->
  <xsd:complexType name="COM-MGR-USER-NEEDS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specifies the abstract needs on the configuration of the Communication Manager for one "user".</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:COM-MGR-USER-NEEDS" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class CoreTopology::CommConnectorPort -->
  <xsd:group name="COMM-CONNECTOR-PORT">
    <xsd:annotation>
      <xsd:documentation>Connectors reception or send port. 

The ECU communication relationships shall be fully described on each level (signal, Pdu and frame). For each signal, Pdu or Frame that is transmitted or received by the ECU an individual SignalPort, IPduPort or FramePort shall be created."</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="COMMUNICATION-DIRECTION" type="AR:COMMUNICATION-DIRECTION-TYPE" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>communication Direction of the Connector Port (input or output Port).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class ECUCParameterDefTemplate::CommonConfigurationAttributes -->
  <xsd:group name="COMMON-CONFIGURATION-ATTRIBUTES">
    <xsd:annotation>
      <xsd:documentation>Attributes used by Configuration Parameters as well as References.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CONFIGURATION-CLASS-AFFECTION" type="AR:CONFIGURATION-CLASS-AFFECTION" minOccurs="0" maxOccurs="1" />
      <xsd:element name="IMPLEMENTATION-CONFIG-CLASSES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="IMPLEMENTATION-CONFIG-CLASS" type="AR:IMPLEMENTATION-CONFIG-CLASS" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="ORIGIN" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>String specifying if this configuration parameter is an AUTOSAR standardized configuration parameter or if the parameter is hardware- or vendor-specific.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:simpleType name="COMMON-CONFIGURATION-ATTRIBUTES--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="BOOLEAN-PARAM-DEF" />
      <xsd:enumeration value="CHOICE-REFERENCE-PARAM-DEF" />
      <xsd:enumeration value="COMMON-CONFIGURATION-ATTRIBUTES" />
      <xsd:enumeration value="CONFIG-PARAMETER" />
      <xsd:enumeration value="CONFIG-REFERENCE" />
      <xsd:enumeration value="DERIVED-BOOLEAN-PARAM-DEF" />
      <xsd:enumeration value="DERIVED-ENUMERATION-PARAM-DEF" />
      <xsd:enumeration value="DERIVED-FLOAT-PARAM-DEF" />
      <xsd:enumeration value="DERIVED-INTEGER-PARAM-DEF" />
      <xsd:enumeration value="DERIVED-STRING-PARAM-DEF" />
      <xsd:enumeration value="ENUMERATION-PARAM-DEF" />
      <xsd:enumeration value="FLOAT-PARAM-DEF" />
      <xsd:enumeration value="FOREIGN-REFERENCE-PARAM-DEF" />
      <xsd:enumeration value="FUNCTION-NAME-DEF" />
      <xsd:enumeration value="INSTANCE-REFERENCE-PARAM-DEF" />
      <xsd:enumeration value="INTEGER-PARAM-DEF" />
      <xsd:enumeration value="LINKER-SYMBOL-DEF" />
      <xsd:enumeration value="REFERENCE-PARAM-DEF" />
      <xsd:enumeration value="STRING-PARAM-DEF" />
      <xsd:enumeration value="SYMBOLIC-NAME-REFERENCE-PARAM-DEF" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class SignalPaths::CommonSignalPath -->
  <xsd:group name="COMMON-SIGNAL-PATH">
    <xsd:annotation>
      <xsd:documentation>The CommonSignalPath describes that two or more SwcToSwcSignals and/or SwcToSwcOperationArguments must take the same way (Signal Path) in the topology.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="OPERATIONS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SWC-TO-SWC-OPERATION-ARGUMENTS" type="AR:SWC-TO-SWC-OPERATION-ARGUMENTS" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SIGNALS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SWC-TO-SWC-SIGNAL" type="AR:SWC-TO-SWC-SIGNAL" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SignalPaths::CommonSignalPath -->
  <xsd:complexType name="COMMON-SIGNAL-PATH" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The CommonSignalPath describes that two or more SwcToSwcSignals and/or SwcToSwcOperationArguments must take the same way (Signal Path) in the topology.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:COMMON-SIGNAL-PATH" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class CoreTopology::CommunicationCluster -->
  <xsd:group name="COMMUNICATION-CLUSTER">
    <xsd:annotation>
      <xsd:documentation>The CommunicationCluster is the main element to describe the topological connection of communicating ECUs.

A cluster describes the ensemble of ECUs, which are linked by a communication medium of arbitrary topology (bus, star, ring, ...). The nodes within the cluster share the same communication protocol, which may be event-triggered, time-triggered or a combination of both.

A CommunicationCluster aggregates one or more physical channels. All physical channels that are aggregated by a communication cluster  are synchronized with each other.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="MAX-FRAME-LENGTH" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Maximal supported length in bytes for frames in this cluster.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="NM-NODE-DETECTION-ENABLED" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Enable/disable the node detection functionality.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="NM-NODE-ID-ENABLED" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Enable/disable the source node identifier.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="NM-REPEAT-MESSAGE-SUPPORT" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>switch for enabling support for repeat message</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PHYSICAL-CHANNELS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="FLEXRAY-PHYSICAL-CHANNEL" type="AR:FLEXRAY-PHYSICAL-CHANNEL" />
            <xsd:element name="PHYSICAL-CHANNEL" type="AR:PHYSICAL-CHANNEL" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PROTOCOL-NAME" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The name of the protocol used.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PROTOCOL-VERSION" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The version of the protocol used.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SPEED" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>channels speed in bits per second</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class CoreTopology::CommunicationCluster -->
  <xsd:complexType name="COMMUNICATION-CLUSTER" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The CommunicationCluster is the main element to describe the topological connection of communicating ECUs.

A cluster describes the ensemble of ECUs, which are linked by a communication medium of arbitrary topology (bus, star, ring, ...). The nodes within the cluster share the same communication protocol, which may be event-triggered, time-triggered or a combination of both.

A CommunicationCluster aggregates one or more physical channels. All physical channels that are aggregated by a communication cluster  are synchronized with each other.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:COMMUNICATION-CLUSTER" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class CoreTopology::CommunicationConnector -->
  <xsd:group name="COMMUNICATION-CONNECTOR">
    <xsd:annotation>
      <xsd:documentation>The connection between the referencing ECU and the referenced channel via the referenced controller.

Connectors are used to describe the bus interfaces of the ECUs and to specify the sending/receiving behavior. 

Each CommunicationConnector has a reference to exactly one communicationController. 

The communicationController can be referenced by several CommunicationConnector elements. This is important for the FlexRay Bus. 
FlexRay communicates via two physical channels. But only one controller in an ECU is responsible for both channels. Thus, two connectors (for channel A and for channel B) must reference to the same controller.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CHANNEL-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:PHYSICAL-CHANNEL--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="COMM-CONTROLLER-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMMUNICATION-CONTROLLER--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="ECU-COMM-PORT-INSTANCES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="FRAME-PORT" type="AR:FRAME-PORT" />
            <xsd:element name="I-PDU-PORT" type="AR:I-PDU-PORT" />
            <xsd:element name="SIGNAL-PORT" type="AR:SIGNAL-PORT" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="NM-ADDRESS" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>An ECUs NM address on the referenced channel.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="TP-ADDRESS" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>An ECUs TP address on the referenced channel. This represents the diagnostic Address.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class CoreTopology::CommunicationConnector -->
  <xsd:complexType name="COMMUNICATION-CONNECTOR" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The connection between the referencing ECU and the referenced channel via the referenced controller.

Connectors are used to describe the bus interfaces of the ECUs and to specify the sending/receiving behavior. 

Each CommunicationConnector has a reference to exactly one communicationController. 

The communicationController can be referenced by several CommunicationConnector elements. This is important for the FlexRay Bus. 
FlexRay communicates via two physical channels. But only one controller in an ECU is responsible for both channels. Thus, two connectors (for channel A and for channel B) must reference to the same controller.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:COMMUNICATION-CONNECTOR" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="COMMUNICATION-CONNECTOR--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="COMMUNICATION-CONNECTOR" />
      <xsd:enumeration value="FLEX-RAY-COMMUNICATION-CONNECTOR" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class CoreTopology::CommunicationController -->
  <xsd:group name="COMMUNICATION-CONTROLLER">
    <xsd:annotation>
      <xsd:documentation>The communication controller is a dedicated hardware device by means of which hosts are sending frames to and receiving frames from the communication medium.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="WAKE-UP-BY-CONTROLLER-SUPPORTED" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>May the ECU be woken up  by this CAN Controller? 
TRUE: wake up is possible
FALSE: wake up is not supported Note: 

This flag may only be set to TRUE if the feature is supported by both hardware and basic software.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class CoreTopology::CommunicationController -->
  <xsd:complexType name="COMMUNICATION-CONTROLLER" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The communication controller is a dedicated hardware device by means of which hosts are sending frames to and receiving frames from the communication medium.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:COMMUNICATION-CONTROLLER" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="COMMUNICATION-CONTROLLER--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="CAN-COMMUNICATION-CONTROLLER" />
      <xsd:enumeration value="COMMUNICATION-CONTROLLER" />
      <xsd:enumeration value="FLEXRAY-COMMUNICATION-CONTROLLER" />
      <xsd:enumeration value="LIN-COMMUNICATION-CONTROLLER" />
      <xsd:enumeration value="LIN-MASTER" />
      <xsd:enumeration value="LIN-SLAVE" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class ECUResourceMapping::CommunicationControllerMapping -->
  <xsd:group name="COMMUNICATION-CONTROLLER-MAPPING">
    <xsd:annotation>
      <xsd:documentation>CommunicationControllerMapping specifies the CommunicationPeripheral
hardware (defined in the ECU Resource Template) to realize the specified CommunicationController in a physical topology.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="COMMUNICATION-CONTROLLER-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMMUNICATION-CONTROLLER--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="COMMUNICATION-PERIPHERAL-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMMUNICATION-PERIPHERAL--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUResourceMapping::CommunicationControllerMapping -->
  <xsd:complexType name="COMMUNICATION-CONTROLLER-MAPPING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>CommunicationControllerMapping specifies the CommunicationPeripheral
hardware (defined in the ECU Resource Template) to realize the specified CommunicationController in a physical topology.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:COMMUNICATION-CONTROLLER-MAPPING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Fibex4Flexray::CommunicationCycle -->
  <xsd:group name="COMMUNICATION-CYCLE">
    <xsd:annotation>
      <xsd:documentation>The communication cycle where the frame is sent.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- element group for class Peripherals::CommunicationFilter -->
  <xsd:group name="COMMUNICATION-FILTER">
    <xsd:annotation>
      <xsd:documentation>Describes the amount and the size of the communication filters. These can be used as acceptance or rejection filters.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="FILTER-COUNT" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>How many acceptance filters are availabe.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="FILTER-WIDTH" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Which bit-size do the filters have.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="WILD-CARDS" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Is it possible to provide wildcard identifires allowing to specify ranges for filtering.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Peripherals::CommunicationFilter -->
  <xsd:complexType name="COMMUNICATION-FILTER" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Describes the amount and the size of the communication filters. These can be used as acceptance or rejection filters.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:COMMUNICATION-FILTER" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Peripherals::CommunicationHWPort -->
  <xsd:group name="COMMUNICATION-HW-PORT">
    <xsd:sequence>
      <xsd:element name="PHYSICAL-LAYER" type="AR:COMMUNICATION-PHYSICAL-MEDIUM" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SPEED" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="1">
            <xsd:element name="COMMUNICATION-SPEED-FIXED" type="AR:COMMUNICATION-SPEED-FIXED" />
            <xsd:element name="COMMUNICATION-SPEED-LIST" type="AR:COMMUNICATION-SPEED-LIST" />
            <xsd:element name="COMMUNICATION-SPEED-RANGE" type="AR:COMMUNICATION-SPEED-RANGE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Peripherals::CommunicationHWPort -->
  <xsd:complexType name="COMMUNICATION-HW-PORT" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-PORT" />
      <xsd:group ref="AR:PERIPHERAL-HW-PORT" />
      <xsd:group ref="AR:COMMUNICATION-HW-PORT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Peripherals::CommunicationPeripheral -->
  <xsd:group name="COMMUNICATION-PERIPHERAL">
    <xsd:annotation>
      <xsd:documentation>Peripheral representing communication devices.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ACCEPTANCE-FILTER" type="AR:COMMUNICATION-FILTER" minOccurs="0" maxOccurs="1" />
      <xsd:element name="ARCHITECTURE" type="AR:COMMUNICATION-ARCHITECTURE-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The implemented architecture</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="CLOCK-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:CLOCK--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="ERROR-DETECTION" type="AR:ERROR-DETECTION-CORRECTION" minOccurs="0" maxOccurs="1" />
      <xsd:element name="HW-PORTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="COMMUNICATION-HW-PORT" type="AR:COMMUNICATION-HW-PORT" />
            <xsd:element name="ECU-COMMUNICATION-PORT" type="AR:ECU-COMMUNICATION-PORT" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="MONITOR" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The Element Monitor specifies if the device supports listen only. In this mode the device is passive on the bus and no acknowledgement or other responds are transmitted.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PROTOCOLS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="COMMUNICATION-PROTOCOL" type="AR:COMMUNICATION-PROTOCOL" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="REJECTION-FILTER" type="AR:COMMUNICATION-FILTER" minOccurs="0" maxOccurs="1" />
      <xsd:element name="TIMESTAMP-AVAILABLE" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Is a timestamp for received frames available.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Peripherals::CommunicationPeripheral -->
  <xsd:complexType name="COMMUNICATION-PERIPHERAL" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Peripheral representing communication devices.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-ELEMENT" />
      <xsd:group ref="AR:PERIPHERAL" />
      <xsd:group ref="AR:COMMUNICATION-PERIPHERAL" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="COMMUNICATION-PERIPHERAL--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="COMMUNICATION-PERIPHERAL" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class Peripherals::CommunicationPhysicalMedium -->
  <xsd:group name="COMMUNICATION-PHYSICAL-MEDIUM">
    <xsd:annotation>
      <xsd:documentation>Describes the physical medium the bus is working on. In most cases it is not relevant for the SW to know about it, only for compatibility checking.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="PHYSICAL-MEDIUM-DATA-LINES" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Specifies how many data lines (ground not included) are used for the physical layer. Some bus systems can be implemented with e.g. 1, 2 or 4 data lines.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PHYSICAL-MEDIUM-STANDARD" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The element protocol name defines the exact standardised protocol name.
Examples are:
- ISO 11519 for low-speed CAN
- IEEE 802.11g for W-LAN (54 Mbit/s at 2,5 GHz)
- IEEE-1394a for Firewire-400</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PHYSICAL-MEDIUM-TYPE" type="AR:COMMUNICATION-PHYSICAL-MEDIUM-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Describes the actual medium used for transmission.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Peripherals::CommunicationPhysicalMedium -->
  <xsd:complexType name="COMMUNICATION-PHYSICAL-MEDIUM" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Describes the physical medium the bus is working on. In most cases it is not relevant for the SW to know about it, only for compatibility checking.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:COMMUNICATION-PHYSICAL-MEDIUM" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Peripherals::CommunicationProtocol -->
  <xsd:group name="COMMUNICATION-PROTOCOL">
    <xsd:annotation>
      <xsd:documentation>The name and version of the communication protocol.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="VERSIONS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="VERSION" type="xsd:string" minOccurs="0" maxOccurs="unbounded">
              <xsd:annotation>
                <xsd:documentation>This is the version number of the implementation of the protocol layer, e.g. 
- 2.0a, 2.0b  for CAN.
- 1.3, 2.0 for LIN.
- 2.0   for USB.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Peripherals::CommunicationProtocol -->
  <xsd:complexType name="COMMUNICATION-PROTOCOL" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The name and version of the communication protocol.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:COMMUNICATION-PROTOCOL" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Peripherals::CommunicationSpeed -->
  <xsd:group name="COMMUNICATION-SPEED">
    <xsd:annotation>
      <xsd:documentation>Abstract element to describe communication speed. This can be either a fixed value, a range or a list of allowed communication speed.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="TOLERANCE" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The element defines the tolerance allowed for the interface. (E.g. K-Line or LIN +/- 2 % at 9.6 Kbd)</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class Peripherals::CommunicationSpeedFixed -->
  <xsd:group name="COMMUNICATION-SPEED-FIXED">
    <xsd:annotation>
      <xsd:documentation>Fixed value for the communication speed.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="FIX-SPEED" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Unit: bits per second</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Peripherals::CommunicationSpeedFixed -->
  <xsd:complexType name="COMMUNICATION-SPEED-FIXED" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Fixed value for the communication speed.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:COMMUNICATION-SPEED" />
      <xsd:group ref="AR:COMMUNICATION-SPEED-FIXED" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Peripherals::CommunicationSpeedList -->
  <xsd:group name="COMMUNICATION-SPEED-LIST">
    <xsd:annotation>
      <xsd:documentation>List of possible communication speed.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SPEEDS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SPEED" type="xsd:integer" minOccurs="0" maxOccurs="unbounded">
              <xsd:annotation>
                <xsd:documentation>Unit: bits per second</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Peripherals::CommunicationSpeedList -->
  <xsd:complexType name="COMMUNICATION-SPEED-LIST" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>List of possible communication speed.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:COMMUNICATION-SPEED" />
      <xsd:group ref="AR:COMMUNICATION-SPEED-LIST" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Peripherals::CommunicationSpeedRange -->
  <xsd:group name="COMMUNICATION-SPEED-RANGE">
    <xsd:annotation>
      <xsd:documentation>Range of communication speed.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="MAX-SPEED" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Unit: bits per second</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MIN-SPEED" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Unit: bits per second</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Peripherals::CommunicationSpeedRange -->
  <xsd:complexType name="COMMUNICATION-SPEED-RANGE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Range of communication speed.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:COMMUNICATION-SPEED" />
      <xsd:group ref="AR:COMMUNICATION-SPEED-RANGE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ECUElectronics::CommunicationTransceiver -->
  <xsd:group name="COMMUNICATION-TRANSCEIVER">
    <xsd:annotation>
      <xsd:documentation>The Communication Transceiver has to transfer and receive the data through the physical link and is the implementation of the OSI layer 1. Communication Transceivers have additional links to the controller/PU to support wake-up feature, enabling/disabling and error indication.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ACCEPTANCE-FILTER" type="AR:COMMUNICATION-FILTER" minOccurs="0" maxOccurs="1" />
      <xsd:element name="ARCHITECTURE" type="AR:COMMUNICATION-ARCHITECTURE-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Distinguish between different implementations.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="REJECTION-FILTER" type="AR:COMMUNICATION-FILTER" minOccurs="0" maxOccurs="1" />
      <xsd:element name="TERMINATION" type="AR:BUS-TERMINATION" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUElectronics::CommunicationTransceiver -->
  <xsd:complexType name="COMMUNICATION-TRANSCEIVER" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The Communication Transceiver has to transfer and receive the data through the physical link and is the implementation of the OSI layer 1. Communication Transceivers have additional links to the controller/PU to support wake-up feature, enabling/disabling and error indication.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-ELEMENT" />
      <xsd:group ref="AR:ECU-ELECTRONICS" />
      <xsd:group ref="AR:COMMUNICATION-TRANSCEIVER" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class AdminData::CompanyRevisionInfo -->
  <xsd:group name="COMPANY-REVISION-INFO">
    <xsd:annotation>
      <xsd:documentation>Use &lt;companyRevisionInfo&gt; , to generate information on document version within the respective company.</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="COMPANY-REVISION-INFO";msr.id="type__COMPANY-REVISION-INFO_TYPE";xml.sequenceOffset="30"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class AdminData::CompanyRevisionInfo -->
  <xsd:complexType name="COMPANY-REVISION-INFO" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Use &lt;companyRevisionInfo&gt; , to generate information on document version within the respective company.</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="COMPANY-REVISION-INFO";msr.id="type__COMPANY-REVISION-INFO_TYPE";xml.sequenceOffset="30"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class AdminData::CompanySpecificInfo -->
  <xsd:group name="COMPANY-SPECIFIC-INFO">
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class AdminData::CompanySpecificInfo -->
  <xsd:complexType name="COMPANY-SPECIFIC-INFO" abstract="false" mixed="false">
    <xsd:sequence />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Implementation::Compiler -->
  <xsd:group name="COMPILER">
    <xsd:annotation>
      <xsd:documentation>Specifies the compiler attributes. In case of source code this specifies requirements how the compiler shall be invoked. In case of object code this documents the used compiler settings.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="NAME" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Compiler name (like gcc).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="OPTIONS" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Specifies the compiler options.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="VENDOR" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Vendor of compiler.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="VERSION" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Exact version of compiler executable.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Implementation::Compiler -->
  <xsd:complexType name="COMPILER" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specifies the compiler attributes. In case of source code this specifies requirements how the compiler shall be invoked. In case of object code this documents the used compiler settings.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:COMPILER" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Components::ComplexDeviceDriverComponentType -->
  <xsd:group name="COMPLEX-DEVICE-DRIVER-COMPONENT-TYPE">
    <xsd:annotation>
      <xsd:documentation>The ComplexDeviceDriver Component is a special AtomicSoftwareComponent that has direct access to hardware on an ECUand which is therefore linked to a specific ECU or specific hardware. The ComplexDeviceDriver ComponentType introduces the possibility to link from the software representation to its hardware description provided by the ECU Resource Template.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="BSW-MODULE-DESCRIPTION-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="BSW-MODULE-DESCRIPTION-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:BSW-MODULE-DESCRIPTION--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="HARDWARE-ELEMENT-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="HARDWARE-ELEMENT-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:HW-ELEMENT--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Components::ComplexDeviceDriverComponentType -->
  <xsd:complexType name="COMPLEX-DEVICE-DRIVER-COMPONENT-TYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The ComplexDeviceDriver Component is a special AtomicSoftwareComponent that has direct access to hardware on an ECUand which is therefore linked to a specific ECU or specific hardware. The ComplexDeviceDriver ComponentType introduces the possibility to link from the software representation to its hardware description provided by the ECU Resource Template.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:COMPONENT-TYPE" />
      <xsd:group ref="AR:COMPLEX-DEVICE-DRIVER-COMPONENT-TYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class SWmapping::ComponentClustering -->
  <xsd:group name="COMPONENT-CLUSTERING">
    <xsd:annotation>
      <xsd:documentation>Constraint that forces the mapping of all referenced SW component instances to the same ECU</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CLUSTERED-COMPONENT-IREFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="CLUSTERED-COMPONENT-IREF" type="AR:COMPONENT-CLUSTERING--CLUSTERED-COMPONENT-IREF" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SWmapping::ComponentClustering -->
  <xsd:complexType name="COMPONENT-CLUSTERING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Constraint that forces the mapping of all referenced SW component instances to the same ECU</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:COMPONENT-CLUSTERING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class _instanceRef::ComponentClustering_clusteredComponent -->
  <xsd:group name="COMPONENT-CLUSTERING--CLUSTERED-COMPONENT-IREF">
    <xsd:sequence>
      <xsd:element name="SOFTWARE-COMPOSITION-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SOFTWARE-COMPOSITION--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="COMPONENT-PROTOTYPE-REF" minOccurs="0" maxOccurs="unbounded">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMPONENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="CLUSTERED-COMPONENT-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMPONENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::ComponentClustering_clusteredComponent -->
  <xsd:complexType name="COMPONENT-CLUSTERING--CLUSTERED-COMPONENT-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:COMPONENT-CLUSTERING--CLUSTERED-COMPONENT-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Composition::ComponentPrototype -->
  <xsd:group name="COMPONENT-PROTOTYPE">
    <xsd:annotation>
      <xsd:documentation>Role of a software component within a composition.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="TYPE-TREF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMPONENT-TYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Composition::ComponentPrototype -->
  <xsd:complexType name="COMPONENT-PROTOTYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Role of a software component within a composition.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:COMPONENT-PROTOTYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="COMPONENT-PROTOTYPE--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="COMPONENT-PROTOTYPE" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class SWmapping::ComponentSeparation -->
  <xsd:group name="COMPONENT-SEPARATION">
    <xsd:annotation>
      <xsd:documentation>Constraint that forces the two referenced SW components (called A and B in the following) not to be mapped to the same ECU. If a SW component (e.g. A) is a composition, none of the atomic SW components making up the A composition must be mapped together with any of the atomic SW components making up the B composition. Furthermore, A and B must be disjoint.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SEPARATED-COMPONENT-IREFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="2">
            <xsd:element name="SEPARATED-COMPONENT-IREF" type="AR:COMPONENT-SEPARATION--SEPARATED-COMPONENT-IREF" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SWmapping::ComponentSeparation -->
  <xsd:complexType name="COMPONENT-SEPARATION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Constraint that forces the two referenced SW components (called A and B in the following) not to be mapped to the same ECU. If a SW component (e.g. A) is a composition, none of the atomic SW components making up the A composition must be mapped together with any of the atomic SW components making up the B composition. Furthermore, A and B must be disjoint.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:COMPONENT-SEPARATION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class _instanceRef::ComponentSeparation_separatedComponent -->
  <xsd:group name="COMPONENT-SEPARATION--SEPARATED-COMPONENT-IREF">
    <xsd:sequence>
      <xsd:element name="SOFTWARE-COMPOSITION-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SOFTWARE-COMPOSITION--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="COMPONENT-PROTOTYPE-REF" minOccurs="0" maxOccurs="unbounded">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMPONENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SEPARATED-COMPONENT-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMPONENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::ComponentSeparation_separatedComponent -->
  <xsd:complexType name="COMPONENT-SEPARATION--SEPARATED-COMPONENT-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:COMPONENT-SEPARATION--SEPARATED-COMPONENT-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Components::ComponentType -->
  <xsd:group name="COMPONENT-TYPE">
    <xsd:annotation>
      <xsd:documentation>Base class for AUTOSAR software components.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="PORTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="P-PORT-PROTOTYPE" type="AR:P-PORT-PROTOTYPE" />
            <xsd:element name="R-PORT-PROTOTYPE" type="AR:R-PORT-PROTOTYPE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:simpleType name="COMPONENT-TYPE--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="APPLICATION-SOFTWARE-COMPONENT-TYPE" />
      <xsd:enumeration value="ATOMIC-SOFTWARE-COMPONENT-TYPE" />
      <xsd:enumeration value="CALPRM-COMPONENT-TYPE" />
      <xsd:enumeration value="COMPLEX-DEVICE-DRIVER-COMPONENT-TYPE" />
      <xsd:enumeration value="COMPONENT-TYPE" />
      <xsd:enumeration value="COMPOSITION-TYPE" />
      <xsd:enumeration value="ECU-ABSTRACTION-COMPONENT-TYPE" />
      <xsd:enumeration value="SENSOR-ACTUATOR-SOFTWARE-COMPONENT-TYPE" />
      <xsd:enumeration value="SERVICE-COMPONENT-TYPE" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class Datatypes::CompositeType -->
  <xsd:group name="COMPOSITE-TYPE">
    <xsd:annotation>
      <xsd:documentation>Abstract base class for all data types composed of other data types.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- element group for class Composition::CompositionType -->
  <xsd:group name="COMPOSITION-TYPE">
    <xsd:annotation>
      <xsd:documentation>A CompositionType aggregates ComponentPrototypes (that in turn are typed by ComponentTypes) as well as ConnectorPrototypes for primarily connecting ComponentPrototypes among each others and towards the surface of the CompositionType. By this means hierarchical structures of software-components can be created.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="COMPONENTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="COMPONENT-PROTOTYPE" type="AR:COMPONENT-PROTOTYPE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="CONNECTORS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="ASSEMBLY-CONNECTOR-PROTOTYPE" type="AR:ASSEMBLY-CONNECTOR-PROTOTYPE" />
            <xsd:element name="DELEGATION-CONNECTOR-PROTOTYPE" type="AR:DELEGATION-CONNECTOR-PROTOTYPE" />
            <xsd:element name="SERVICE-CONNECTOR-PROTOTYPE" type="AR:SERVICE-CONNECTOR-PROTOTYPE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Composition::CompositionType -->
  <xsd:complexType name="COMPOSITION-TYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A CompositionType aggregates ComponentPrototypes (that in turn are typed by ComponentTypes) as well as ConnectorPrototypes for primarily connecting ComponentPrototypes among each others and towards the surface of the CompositionType. By this means hierarchical structures of software-components can be created.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:COMPONENT-TYPE" />
      <xsd:group ref="AR:COMPOSITION-TYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="COMPOSITION-TYPE--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="COMPOSITION-TYPE" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class ComputationMethod::Compu -->
  <xsd:group name="COMPU">
    <xsd:sequence>
      <xsd:choice minOccurs="0" maxOccurs="1">
        <xsd:group ref="AR:COMPU-PROG-CODE" />
        <xsd:group ref="AR:COMPU-SCALES" />
      </xsd:choice>
      <xsd:element name="COMPU-DEFAULT-VALUE" type="AR:COMPU-CONST" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ComputationMethod::Compu -->
  <xsd:complexType name="COMPU" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:COMPU" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ComputationMethod::CompuConst -->
  <xsd:group name="COMPU-CONST">
    <xsd:sequence>
      <xsd:choice minOccurs="0" maxOccurs="1">
        <xsd:group ref="AR:COMPU-CONST-FORMULA-CONTENT" />
        <xsd:group ref="AR:COMPU-CONST-NUMERIC-CONTENT" />
        <xsd:group ref="AR:COMPU-CONST-TEXT-CONTENT" />
      </xsd:choice>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ComputationMethod::CompuConst -->
  <xsd:complexType name="COMPU-CONST" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:COMPU-CONST" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ComputationMethod::CompuConstContent -->
  <xsd:group name="COMPU-CONST-CONTENT">
    <xsd:sequence />
  </xsd:group>
  <!-- element group for class ComputationMethod::CompuConstFormulaContent -->
  <xsd:group name="COMPU-CONST-FORMULA-CONTENT">
    <xsd:sequence>
      <xsd:element name="VF" type="AR:VF" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ComputationMethod::CompuConstFormulaContent -->
  <xsd:complexType name="COMPU-CONST-FORMULA-CONTENT" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:COMPU-CONST-FORMULA-CONTENT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ComputationMethod::CompuConstNumericContent -->
  <xsd:group name="COMPU-CONST-NUMERIC-CONTENT">
    <xsd:sequence>
      <xsd:element name="V" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Use &lt;v&gt; to enter a numerical value.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="COMPU-CONST_numericContent_TYPE__V";msr.tbdString="true";xml.sequenceOffset="50"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ComputationMethod::CompuConstNumericContent -->
  <xsd:complexType name="COMPU-CONST-NUMERIC-CONTENT" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:COMPU-CONST-NUMERIC-CONTENT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ComputationMethod::CompuConstTextContent -->
  <xsd:group name="COMPU-CONST-TEXT-CONTENT">
    <xsd:sequence>
      <xsd:element name="VT" type="AR:VT" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ComputationMethod::CompuConstTextContent -->
  <xsd:complexType name="COMPU-CONST-TEXT-CONTENT" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:COMPU-CONST-TEXT-CONTENT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ComputationMethod::CompuContent -->
  <xsd:group name="COMPU-CONTENT">
    <xsd:sequence />
  </xsd:group>
  <!-- element group for class ComputationMethod::CompuGenericMath -->
  <xsd:group name="COMPU-GENERIC-MATH">
    <xsd:annotation>
      <xsd:documentation>This class represents a calculation formula as a simple arithmetical expression.

string f(x): function to calculate the physical value from the binary, control unit internal value. The interpretation proceeds from left to right for operations of the same operation preferences. Operator preferences, such as power before product/quotient before sum/difference before shift left before shift right before logical AND before logical OR are taken into account. Brackets are allowed and should be used in order to exclude interpretation doubt. 

For more details refer to ASAM Harmonized Data Objects v1.1 Chapter 9.3.11.

Note that this element is a mixed string since a future variant mechanism  might use placeholdes to represent references to other objects of the metamodel.

As of August 2007 within ASAM there are slightly different syntaxes. One from ASAM-HDO (GenericMath) and the one from SwDataDependency: The difference is mainly between available functions and operators. Nevertheless we use the same class for now.

numeric_expression ::= ( "-"expression ) | ( expression ( "+" | "-" | "*" | "/" | "^") expression )
                expression ::= ( number | variable | numeric_expression | ( "(" expression ")" ) | sinus_statement | cosinus_statement | sqrt_statement ) | expression {white-space}
                sinus_statement ::= "sin" "(" expression ")"
                cosinus_statement ::= "cos" "(" expression ")"
                sqrt_statement ::= "sqrt" "(" expression ")"
                number ::= integer_literal | float_literal
                variable ::= Any valid Object in question
                integer_literal ::= ( "1..9" { "0..9" } ) | ( "0" "x" "0..9a..f" { "0..9a..f" } )
                float_literal ::= ( decimal_digits "."  decimal_digits   exponent_part  ) | ( "." decimal_digits  exponent_part  ) | ( decimal_digits  exponent_part  )
                decimal_digits ::= "0..9" { "0..9" }
                exponent_part ::= "e"  "+" | "-"  decimal_digits
                white-space ::= tabulator | blank | newline | carriage_return | {tabulator | blank | newline | carriage_return }
                tabulator ::= \t
                blank ::= " "
                newline ::= \n
                carriage_return ::= \c</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="ASAM-COMPU-GENERIC-MATH";msr.id="type__COMPU-GENERIC-MATH_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- attribute group for class ComputationMethod::CompuGenericMath -->
  <xsd:attributeGroup name="COMPU-GENERIC-MATH">
    <xsd:annotation>
      <xsd:documentation>This class represents a calculation formula as a simple arithmetical expression.

string f(x): function to calculate the physical value from the binary, control unit internal value. The interpretation proceeds from left to right for operations of the same operation preferences. Operator preferences, such as power before product/quotient before sum/difference before shift left before shift right before logical AND before logical OR are taken into account. Brackets are allowed and should be used in order to exclude interpretation doubt. 

For more details refer to ASAM Harmonized Data Objects v1.1 Chapter 9.3.11.

Note that this element is a mixed string since a future variant mechanism  might use placeholdes to represent references to other objects of the metamodel.

As of August 2007 within ASAM there are slightly different syntaxes. One from ASAM-HDO (GenericMath) and the one from SwDataDependency: The difference is mainly between available functions and operators. Nevertheless we use the same class for now.

numeric_expression ::= ( "-"expression ) | ( expression ( "+" | "-" | "*" | "/" | "^") expression )
                expression ::= ( number | variable | numeric_expression | ( "(" expression ")" ) | sinus_statement | cosinus_statement | sqrt_statement ) | expression {white-space}
                sinus_statement ::= "sin" "(" expression ")"
                cosinus_statement ::= "cos" "(" expression ")"
                sqrt_statement ::= "sqrt" "(" expression ")"
                number ::= integer_literal | float_literal
                variable ::= Any valid Object in question
                integer_literal ::= ( "1..9" { "0..9" } ) | ( "0" "x" "0..9a..f" { "0..9a..f" } )
                float_literal ::= ( decimal_digits "."  decimal_digits   exponent_part  ) | ( "." decimal_digits  exponent_part  ) | ( decimal_digits  exponent_part  )
                decimal_digits ::= "0..9" { "0..9" }
                exponent_part ::= "e"  "+" | "-"  decimal_digits
                white-space ::= tabulator | blank | newline | carriage_return | {tabulator | blank | newline | carriage_return }
                tabulator ::= \t
                blank ::= " "
                newline ::= \n
                carriage_return ::= \c</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="ASAM-COMPU-GENERIC-MATH";msr.id="type__COMPU-GENERIC-MATH_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:attribute name="LEVEL" type="AR:IDENTIFIER">
      <xsd:annotation>
        <xsd:documentation>Placeholder to describe an indicator of a language level for the mathematics e.g. INFORMAL, ASAMHDO.
May be refined by particular usecases.</xsd:documentation>
        <xsd:appinfo source="tags">msr.id="COMPU-GENERIC-MATH_TYPE__COMPU-GENERIC-MATH_TYPE__LEVEL";xml.attribute="true"</xsd:appinfo>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:attributeGroup>
  <!-- complex type for class ComputationMethod::CompuGenericMath -->
  <xsd:complexType name="COMPU-GENERIC-MATH" abstract="false" mixed="true">
    <xsd:annotation>
      <xsd:documentation>This class represents a calculation formula as a simple arithmetical expression.

string f(x): function to calculate the physical value from the binary, control unit internal value. The interpretation proceeds from left to right for operations of the same operation preferences. Operator preferences, such as power before product/quotient before sum/difference before shift left before shift right before logical AND before logical OR are taken into account. Brackets are allowed and should be used in order to exclude interpretation doubt. 

For more details refer to ASAM Harmonized Data Objects v1.1 Chapter 9.3.11.

Note that this element is a mixed string since a future variant mechanism  might use placeholdes to represent references to other objects of the metamodel.

As of August 2007 within ASAM there are slightly different syntaxes. One from ASAM-HDO (GenericMath) and the one from SwDataDependency: The difference is mainly between available functions and operators. Nevertheless we use the same class for now.

numeric_expression ::= ( "-"expression ) | ( expression ( "+" | "-" | "*" | "/" | "^") expression )
                expression ::= ( number | variable | numeric_expression | ( "(" expression ")" ) | sinus_statement | cosinus_statement | sqrt_statement ) | expression {white-space}
                sinus_statement ::= "sin" "(" expression ")"
                cosinus_statement ::= "cos" "(" expression ")"
                sqrt_statement ::= "sqrt" "(" expression ")"
                number ::= integer_literal | float_literal
                variable ::= Any valid Object in question
                integer_literal ::= ( "1..9" { "0..9" } ) | ( "0" "x" "0..9a..f" { "0..9a..f" } )
                float_literal ::= ( decimal_digits "."  decimal_digits   exponent_part  ) | ( "." decimal_digits  exponent_part  ) | ( decimal_digits  exponent_part  )
                decimal_digits ::= "0..9" { "0..9" }
                exponent_part ::= "e"  "+" | "-"  decimal_digits
                white-space ::= tabulator | blank | newline | carriage_return | {tabulator | blank | newline | carriage_return }
                tabulator ::= \t
                blank ::= " "
                newline ::= \n
                carriage_return ::= \c</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="ASAM-COMPU-GENERIC-MATH";msr.id="type__COMPU-GENERIC-MATH_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice minOccurs="0" maxOccurs="unbounded" />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:COMPU-GENERIC-MATH" />
  </xsd:complexType>
  <!-- element group for class ComputationMethod::CompuMethod -->
  <xsd:group name="COMPU-METHOD">
    <xsd:sequence>
      <xsd:element name="DISPLAY-FORMAT" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This property specifies, how the physical value shall be displayed e.g. in documents or measurement and calibration tools.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="COMPU-METHOD_TYPE__DISPLAY-FORMAT";msr.tbdString="true";xml.sequenceOffset="20"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="UNIT-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:UNIT--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="COMPU-INTERNAL-TO-PHYS" type="AR:COMPU" minOccurs="0" maxOccurs="1" />
      <xsd:element name="COMPU-PHYS-TO-INTERNAL" type="AR:COMPU" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ComputationMethod::CompuMethod -->
  <xsd:complexType name="COMPU-METHOD" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:COMPU-METHOD" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="COMPU-METHOD--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="COMPU-METHOD" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class ComputationMethod::CompuNominatorDenominator -->
  <xsd:group name="COMPU-NOMINATOR-DENOMINATOR">
    <xsd:choice>
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
        <xsd:element name="VF" type="AR:VF" minOccurs="0" maxOccurs="unbounded" />
        <xsd:element name="V" type="xsd:string" minOccurs="0" maxOccurs="unbounded">
          <xsd:annotation>
            <xsd:documentation>Use &lt;v&gt; to enter a numerical value.</xsd:documentation>
            <xsd:appinfo source="tags">xml.sequenceOffset="30";msr.id="COMPU-NOMINATOR_DENOMINATOR_TYPE__V"</xsd:appinfo>
          </xsd:annotation>
        </xsd:element>
      </xsd:choice>
    </xsd:choice>
  </xsd:group>
  <!-- complex type for class ComputationMethod::CompuNominatorDenominator -->
  <xsd:complexType name="COMPU-NOMINATOR-DENOMINATOR" abstract="false" mixed="false">
    <xsd:choice minOccurs="0" maxOccurs="unbounded">
      <xsd:group ref="AR:COMPU-NOMINATOR-DENOMINATOR" />
    </xsd:choice>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ComputationMethod::CompuProgCode -->
  <xsd:group name="COMPU-PROG-CODE">
    <xsd:sequence>
      <xsd:element name="PROG-CODE" type="AR:PROG-CODE" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ComputationMethod::CompuProgCode -->
  <xsd:complexType name="COMPU-PROG-CODE" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:COMPU-PROG-CODE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ComputationMethod::CompuRationalCoeffs -->
  <xsd:group name="COMPU-RATIONAL-COEFFS">
    <xsd:sequence>
      <xsd:element name="COMPU-NUMERATOR" type="AR:COMPU-NOMINATOR-DENOMINATOR" minOccurs="0" maxOccurs="1" />
      <xsd:element name="COMPU-DENOMINATOR" type="AR:COMPU-NOMINATOR-DENOMINATOR" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ComputationMethod::CompuRationalCoeffs -->
  <xsd:complexType name="COMPU-RATIONAL-COEFFS" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:COMPU-RATIONAL-COEFFS" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ComputationMethod::CompuScale -->
  <xsd:group name="COMPU-SCALE">
    <xsd:sequence>
      <xsd:element name="SHORT-LABEL" type="AR:IDENTIFIER" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This element specifies a short name for the particular scale. The name can for example be used to derive a programming language identifier.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="COMPU-SCALE_TYPE__SHORT-LABEL";msr.tbdString="true";xml.sequenceOffset="20"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="DESC" type="AR:ML-DATA-2" minOccurs="0" maxOccurs="1" />
      <xsd:element name="LOWER-LIMIT" type="AR:LIMIT" minOccurs="0" maxOccurs="1" />
      <xsd:element name="UPPER-LIMIT" type="AR:LIMIT" minOccurs="0" maxOccurs="1" />
      <xsd:choice minOccurs="0" maxOccurs="1">
        <xsd:group ref="AR:COMPU-SCALE-CONSTANT-CONTENTS" />
        <xsd:group ref="AR:COMPU-SCALE-RATIONAL-FORMULA" />
      </xsd:choice>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ComputationMethod::CompuScale -->
  <xsd:complexType name="COMPU-SCALE" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:COMPU-SCALE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ComputationMethod::CompuScaleConstantContents -->
  <xsd:group name="COMPU-SCALE-CONSTANT-CONTENTS">
    <xsd:sequence>
      <xsd:element name="COMPU-CONST" type="AR:COMPU-CONST" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ComputationMethod::CompuScaleConstantContents -->
  <xsd:complexType name="COMPU-SCALE-CONSTANT-CONTENTS" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:COMPU-SCALE-CONSTANT-CONTENTS" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ComputationMethod::CompuScaleContents -->
  <xsd:group name="COMPU-SCALE-CONTENTS">
    <xsd:sequence />
  </xsd:group>
  <!-- element group for class ComputationMethod::CompuScaleGenericMath -->
  <xsd:group name="COMPU-SCALE-GENERIC-MATH">
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ComputationMethod::CompuScaleGenericMath -->
  <xsd:complexType name="COMPU-SCALE-GENERIC-MATH" abstract="false" mixed="false">
    <xsd:sequence />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ComputationMethod::CompuScaleRationalFormula -->
  <xsd:group name="COMPU-SCALE-RATIONAL-FORMULA">
    <xsd:sequence>
      <xsd:element name="COMPU-RATIONAL-COEFFS" type="AR:COMPU-RATIONAL-COEFFS" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ComputationMethod::CompuScaleRationalFormula -->
  <xsd:complexType name="COMPU-SCALE-RATIONAL-FORMULA" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:COMPU-SCALE-RATIONAL-FORMULA" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ComputationMethod::CompuScales -->
  <xsd:group name="COMPU-SCALES">
    <xsd:sequence>
      <xsd:element name="COMPU-SCALES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="COMPU-SCALE" type="AR:COMPU-SCALE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ComputationMethod::CompuScales -->
  <xsd:complexType name="COMPU-SCALES" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:COMPU-SCALES" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ECUCParameterDefTemplate::ConfigParameter -->
  <xsd:group name="CONFIG-PARAMETER">
    <xsd:annotation>
      <xsd:documentation>Abstract class used to define the similarities of all ECU Configuration Parameter types defined as subclasses.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SYMBOLIC-NAME-VALUE" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Specifies that this parameter's value is used, together with the aggregating container, to derive a symbolic name definition. E.g.: #define "container_shortName" "this parameter's value".</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:simpleType name="CONFIG-PARAMETER--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="BOOLEAN-PARAM-DEF" />
      <xsd:enumeration value="CONFIG-PARAMETER" />
      <xsd:enumeration value="DERIVED-BOOLEAN-PARAM-DEF" />
      <xsd:enumeration value="DERIVED-ENUMERATION-PARAM-DEF" />
      <xsd:enumeration value="DERIVED-FLOAT-PARAM-DEF" />
      <xsd:enumeration value="DERIVED-INTEGER-PARAM-DEF" />
      <xsd:enumeration value="DERIVED-STRING-PARAM-DEF" />
      <xsd:enumeration value="ENUMERATION-PARAM-DEF" />
      <xsd:enumeration value="FLOAT-PARAM-DEF" />
      <xsd:enumeration value="FUNCTION-NAME-DEF" />
      <xsd:enumeration value="INTEGER-PARAM-DEF" />
      <xsd:enumeration value="LINKER-SYMBOL-DEF" />
      <xsd:enumeration value="STRING-PARAM-DEF" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class ECUCParameterDefTemplate::ConfigReference -->
  <xsd:group name="CONFIG-REFERENCE">
    <xsd:annotation>
      <xsd:documentation>Common class to gather the attributes for the definition of references.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <xsd:simpleType name="CONFIG-REFERENCE--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="CHOICE-REFERENCE-PARAM-DEF" />
      <xsd:enumeration value="CONFIG-REFERENCE" />
      <xsd:enumeration value="FOREIGN-REFERENCE-PARAM-DEF" />
      <xsd:enumeration value="INSTANCE-REFERENCE-PARAM-DEF" />
      <xsd:enumeration value="REFERENCE-PARAM-DEF" />
      <xsd:enumeration value="SYMBOLIC-NAME-REFERENCE-PARAM-DEF" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class ECUCDescriptionTemplate::ConfigReferenceValue -->
  <xsd:group name="CONFIG-REFERENCE-VALUE">
    <xsd:annotation>
      <xsd:documentation>Abstract class to be used as common parent for all reference values in the ECU Configuration Description.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DEFINITION-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:CONFIG-REFERENCE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class ECUCParameterDefTemplate::ConfigurationClassAffection -->
  <xsd:group name="CONFIGURATION-CLASS-AFFECTION">
    <xsd:annotation>
      <xsd:documentation>Specifies in the "VendorSpecificModuleDefinition" whether changes on this parameter do affect other parameters in a later configuration step.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="AFFECTED-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="AFFECTED-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:COMMON-CONFIGURATION-ATTRIBUTES--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="AFFECTION-KIND" type="AR:CONFIGURATION-AFFECTION" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Specifies which affect do changes in this parameter have on other parameters.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUCParameterDefTemplate::ConfigurationClassAffection -->
  <xsd:complexType name="CONFIGURATION-CLASS-AFFECTION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specifies in the "VendorSpecificModuleDefinition" whether changes on this parameter do affect other parameters in a later configuration step.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:CONFIGURATION-CLASS-AFFECTION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Composition::ConnectorPrototype -->
  <xsd:group name="CONNECTOR-PROTOTYPE">
    <xsd:annotation>
      <xsd:documentation>The base class for connectors between ports. Connectors have to be identifiable to allow references from the system constraint template.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- element group for class Constants::ConstantReference -->
  <xsd:group name="CONSTANT-REFERENCE">
    <xsd:annotation>
      <xsd:documentation>Instead of defining this constant inline, another constant is referenced.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CONSTANT-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:CONSTANT-SPECIFICATION--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Constants::ConstantReference -->
  <xsd:complexType name="CONSTANT-REFERENCE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Instead of defining this constant inline, another constant is referenced.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:DATA-PROTOTYPE" />
      <xsd:group ref="AR:CONSTANT-REFERENCE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Constants::ConstantSpecification -->
  <xsd:group name="CONSTANT-SPECIFICATION">
    <xsd:annotation>
      <xsd:documentation>Specification of a constant that can be part of a package, i.e. it can be defined stand-alone.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="VALUE" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="1">
            <xsd:element name="ARRAY-SPECIFICATION" type="AR:ARRAY-SPECIFICATION" />
            <xsd:element name="BOOLEAN-LITERAL" type="AR:BOOLEAN-LITERAL" />
            <xsd:element name="CHAR-LITERAL" type="AR:CHAR-LITERAL" />
            <xsd:element name="CONSTANT-REFERENCE" type="AR:CONSTANT-REFERENCE" />
            <xsd:element name="INTEGER-LITERAL" type="AR:INTEGER-LITERAL" />
            <xsd:element name="OPAQUE-LITERAL" type="AR:OPAQUE-LITERAL" />
            <xsd:element name="REAL-LITERAL" type="AR:REAL-LITERAL" />
            <xsd:element name="RECORD-SPECIFICATION" type="AR:RECORD-SPECIFICATION" />
            <xsd:element name="STRING-LITERAL" type="AR:STRING-LITERAL" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Constants::ConstantSpecification -->
  <xsd:complexType name="CONSTANT-SPECIFICATION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specification of a constant that can be part of a package, i.e. it can be defined stand-alone.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:CONSTANT-SPECIFICATION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="CONSTANT-SPECIFICATION--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="CONSTANT-SPECIFICATION" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class ECUCDescriptionTemplate::Container -->
  <xsd:group name="CONTAINER">
    <xsd:annotation>
      <xsd:documentation>Represents a Container definition in the ECU Configuration Description.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DEFINITION-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:CONTAINER-DEF--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PARAMETER-VALUES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="BOOLEAN-VALUE" type="AR:BOOLEAN-VALUE" />
            <xsd:element name="ENUMERATION-VALUE" type="AR:ENUMERATION-VALUE" />
            <xsd:element name="FLOAT-VALUE" type="AR:FLOAT-VALUE" />
            <xsd:element name="FUNCTION-NAME-VALUE" type="AR:FUNCTION-NAME-VALUE" />
            <xsd:element name="INTEGER-VALUE" type="AR:INTEGER-VALUE" />
            <xsd:element name="LINKER-SYMBOL-VALUE" type="AR:LINKER-SYMBOL-VALUE" />
            <xsd:element name="STRING-VALUE" type="AR:STRING-VALUE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="REFERENCE-VALUES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="INSTANCE-REFERENCE-VALUE" type="AR:INSTANCE-REFERENCE-VALUE" />
            <xsd:element name="REFERENCE-VALUE" type="AR:REFERENCE-VALUE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SUB-CONTAINERS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="CONTAINER" type="AR:CONTAINER" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUCDescriptionTemplate::Container -->
  <xsd:complexType name="CONTAINER" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Represents a Container definition in the ECU Configuration Description.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:CONTAINER" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUCParameterDefTemplate::ContainerDef -->
  <xsd:group name="CONTAINER-DEF">
    <xsd:annotation>
      <xsd:documentation>Base class used to gather common attributes of configuration container definitions.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="POST-BUILD-CHANGEABLE" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Specifies if the number of instances of this container may be changed post-build time. This parameter may only be set to true if all of the following conditions hold:
- the container's upperMultiplicity &gt; lowerMultiplicity
- all parameters within the container and subContainers are post-build time changeable.
If any of the aggregated parameters is either pre-compile time or link time this attribute is ignored and may be omitted.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:simpleType name="CONTAINER-DEF--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="CHOICE-CONTAINER-DEF" />
      <xsd:enumeration value="CONTAINER-DEF" />
      <xsd:enumeration value="PARAM-CONF-CONTAINER-DEF" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class Fibex4Flexray::CycleCounter -->
  <xsd:group name="CYCLE-COUNTER">
    <xsd:annotation>
      <xsd:documentation>The communication cycle where the frame is send is described by the attribute "cycleCounter".</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CYCLE-COUNTER" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The communication cycle where the frame described by this timing is sent. If a timing is given in this way the referencing cluster must specify the NUMBER-OF-CYCLES as upper bound and point of total repetition. 

This value is incremented at the beginning of each new cycle, ranging from 0 to
63, and is reset to 0 after a sequence of 64 cycles.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Fibex4Flexray::CycleCounter -->
  <xsd:complexType name="CYCLE-COUNTER" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The communication cycle where the frame is send is described by the attribute "cycleCounter".</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:CYCLE-COUNTER" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Fibex4Flexray::CycleRepetition -->
  <xsd:group name="CYCLE-REPETITION">
    <xsd:annotation>
      <xsd:documentation>The communication cycle where the frame is send is described by the
attributes baseCycle and cycleRepetition.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="BASE-CYCLE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The first communication cycle where the frame is sent.

This value is incremented at the beginning of each new cycle, ranging from 0 to
63, and is reset to 0 after a sequence of 64 cycles.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="CYCLE-REPETITION" type="AR:CYCLE-REPETITION-TYPE" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The number of communication cycles (after the first cycle) whenever the frame described by this timing is sent again.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Fibex4Flexray::CycleRepetition -->
  <xsd:complexType name="CYCLE-REPETITION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The communication cycle where the frame is send is described by the
attributes baseCycle and cycleRepetition.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:CYCLE-REPETITION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Timing::CyclicTiming -->
  <xsd:group name="CYCLIC-TIMING">
    <xsd:annotation>
      <xsd:documentation>Specification of a cyclic sending behavior.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="FINAL-REPETITIONS" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Number of repetitions the pdu is sent from the moment the stop condition has been met</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="REPEATING-TIME" type="AR:TIME-RANGE-TYPE" minOccurs="0" maxOccurs="1" />
      <xsd:element name="STARTING-TIME" type="AR:TIME-RANGE-TYPE" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Timing::CyclicTiming -->
  <xsd:complexType name="CYCLIC-TIMING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specification of a cyclic sending behavior.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:CYCLIC-TIMING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Peripherals::DAC -->
  <xsd:group name="DAC">
    <xsd:annotation>
      <xsd:documentation>The processing unit writes a digital value to a register of the DAC and the value is converted to an analogue value at a given pin.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Peripherals::DAC -->
  <xsd:complexType name="DAC" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The processing unit writes a digital value to a register of the DAC and the value is converted to an analogue value at a given pin.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-ELEMENT" />
      <xsd:group ref="AR:PERIPHERAL" />
      <xsd:group ref="AR:ANALOGUE-IO" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class GlobalConstraints::DataConstr -->
  <xsd:group name="DATA-CONSTR">
    <xsd:sequence>
      <xsd:element name="DATA-CONSTR-RULES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="DATA-CONSTR-RULE" type="AR:DATA-CONSTR-RULE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class GlobalConstraints::DataConstr -->
  <xsd:complexType name="DATA-CONSTR" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:DATA-CONSTR" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="DATA-CONSTR--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="DATA-CONSTR" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class GlobalConstraints::DataConstrRule -->
  <xsd:group name="DATA-CONSTR-RULE">
    <xsd:sequence>
      <xsd:element name="PHYS-CONSTRS" type="AR:PHYS-CONSTRS" minOccurs="0" maxOccurs="1" />
      <xsd:element name="INTERNAL-CONSTRS" type="AR:INTERNAL-CONSTRS" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class GlobalConstraints::DataConstrRule -->
  <xsd:complexType name="DATA-CONSTR-RULE" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:DATA-CONSTR-RULE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class PortInterface::DataElementPrototype -->
  <xsd:group name="DATA-ELEMENT-PROTOTYPE">
    <xsd:annotation>
      <xsd:documentation>A data element of a sender-receiver interface, supporting signal like communication patterns.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="IS-QUEUED" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Qualifies whether the content of the data element is queued. If it is queued, then the data element has "event" semantics, i.e. data elements are stored in a queue and all data elements are processed in "first in first out" order.
If it is not queued, then the "last is best" semantics applies. Please note: Depending on the read access cycle to the data element some values might not be processed by the receiver.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class PortInterface::DataElementPrototype -->
  <xsd:complexType name="DATA-ELEMENT-PROTOTYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A data element of a sender-receiver interface, supporting signal like communication patterns.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:DATA-PROTOTYPE" />
      <xsd:group ref="AR:DATA-ELEMENT-PROTOTYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="DATA-ELEMENT-PROTOTYPE--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="DATA-ELEMENT-PROTOTYPE" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class Filter::DataFilter -->
  <xsd:group name="DATA-FILTER">
    <xsd:annotation>
      <xsd:documentation>Base class for data filters.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- element group for class DataMapping::DataMapping -->
  <xsd:group name="DATA-MAPPING">
    <xsd:annotation>
      <xsd:documentation>Mapping of port elements (data elements and parameters) to frames and signals.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- element group for class Datatypes::DataPrototype -->
  <xsd:group name="DATA-PROTOTYPE">
    <xsd:annotation>
      <xsd:documentation>Base class for prototypical roles of a datatype.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-DATA-DEF-PROPS" type="AR:SW-DATA-DEF-PROPS" minOccurs="0" maxOccurs="1" />
      <xsd:element name="TYPE-TREF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:DATATYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class MeasurementProperty::DataPrototypeRef -->
  <xsd:group name="DATA-PROTOTYPE-REF">
    <xsd:sequence>
      <xsd:element name="DATA-PROTOTYPE-IREF" type="AR:DATA-PROTOTYPE-REF--DATA-PROTOTYPE-IREF" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class MeasurementProperty::DataPrototypeRef -->
  <xsd:complexType name="DATA-PROTOTYPE-REF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:DATA-PROTOTYPE-REF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class _instanceRef::DataPrototypeRef_DataPrototype -->
  <xsd:group name="DATA-PROTOTYPE-REF--DATA-PROTOTYPE-IREF">
    <xsd:sequence>
      <xsd:element name="COMPOSITE-COMPONENT-PROTOTYPE-REF" minOccurs="0" maxOccurs="unbounded">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMPONENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="ASSEMBLY-CONNECTOR-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:ASSEMBLY-CONNECTOR-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="COMPONENT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMPONENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PORT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:PORT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="DATA-PROTOTYPE-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:DATA-ELEMENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::DataPrototypeRef_DataPrototype -->
  <xsd:complexType name="DATA-PROTOTYPE-REF--DATA-PROTOTYPE-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:DATA-PROTOTYPE-REF--DATA-PROTOTYPE-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class DataElements::DataReadAccess -->
  <xsd:group name="DATA-READ-ACCESS">
    <xsd:annotation>
      <xsd:documentation>The presence of a DataReadAccess implies that a RunnableEntity needs access to a DataElementPrototype in an RPortPrototype. The RunnableEntity will not modify the contents of the data but only read the information.
The RunnableEntity expects that the contents of this data does NOT change during the entire duration of its execution.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DATA-ELEMENT-IREF" type="AR:DATA-READ-ACCESS--DATA-ELEMENT-IREF" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DataElements::DataReadAccess -->
  <xsd:complexType name="DATA-READ-ACCESS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The presence of a DataReadAccess implies that a RunnableEntity needs access to a DataElementPrototype in an RPortPrototype. The RunnableEntity will not modify the contents of the data but only read the information.
The RunnableEntity expects that the contents of this data does NOT change during the entire duration of its execution.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:DATA-READ-ACCESS" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class _instanceRef::DataReadAccess_dataElement -->
  <xsd:group name="DATA-READ-ACCESS--DATA-ELEMENT-IREF">
    <xsd:sequence>
      <xsd:element name="R-PORT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:R-PORT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="DATA-ELEMENT-PROTOTYPE-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:DATA-ELEMENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::DataReadAccess_dataElement -->
  <xsd:complexType name="DATA-READ-ACCESS--DATA-ELEMENT-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:DATA-READ-ACCESS--DATA-ELEMENT-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class RTEEvents::DataReceiveErrorEvent -->
  <xsd:group name="DATA-RECEIVE-ERROR-EVENT">
    <xsd:annotation>
      <xsd:documentation>This event is raised by the RTE when the Com layer detects and notifies an error concerning the reception of the referenced data element.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DATA-IREF" type="AR:DATA-RECEIVE-ERROR-EVENT--DATA-IREF" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class RTEEvents::DataReceiveErrorEvent -->
  <xsd:complexType name="DATA-RECEIVE-ERROR-EVENT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This event is raised by the RTE when the Com layer detects and notifies an error concerning the reception of the referenced data element.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:RTE-EVENT" />
      <xsd:group ref="AR:DATA-RECEIVE-ERROR-EVENT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class _instanceRef::DataReceiveErrorEvent_data -->
  <xsd:group name="DATA-RECEIVE-ERROR-EVENT--DATA-IREF">
    <xsd:sequence>
      <xsd:element name="R-PORT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:R-PORT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="DATA-ELEMENT-PROTOTYPE-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:DATA-ELEMENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::DataReceiveErrorEvent_data -->
  <xsd:complexType name="DATA-RECEIVE-ERROR-EVENT--DATA-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:DATA-RECEIVE-ERROR-EVENT--DATA-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class DataElements::DataReceivePoint -->
  <xsd:group name="DATA-RECEIVE-POINT">
    <xsd:annotation>
      <xsd:documentation>A DataReceivePoint allows a RunnableEntity to explicitly query for received information, thereby blocking write access to the same information only for a very brief period.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DATA-ELEMENT-IREF" type="AR:DATA-RECEIVE-POINT--DATA-ELEMENT-IREF" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DataElements::DataReceivePoint -->
  <xsd:complexType name="DATA-RECEIVE-POINT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A DataReceivePoint allows a RunnableEntity to explicitly query for received information, thereby blocking write access to the same information only for a very brief period.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:DATA-RECEIVE-POINT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class _instanceRef::DataReceivePoint_dataElement -->
  <xsd:group name="DATA-RECEIVE-POINT--DATA-ELEMENT-IREF">
    <xsd:sequence>
      <xsd:element name="R-PORT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:R-PORT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="DATA-ELEMENT-PROTOTYPE-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:DATA-ELEMENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::DataReceivePoint_dataElement -->
  <xsd:complexType name="DATA-RECEIVE-POINT--DATA-ELEMENT-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:DATA-RECEIVE-POINT--DATA-ELEMENT-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class RTEEvents::DataReceivedEvent -->
  <xsd:group name="DATA-RECEIVED-EVENT">
    <xsd:annotation>
      <xsd:documentation>The event is raised when the referenced data elements are received.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DATA-IREF" type="AR:DATA-RECEIVED-EVENT--DATA-IREF" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class RTEEvents::DataReceivedEvent -->
  <xsd:complexType name="DATA-RECEIVED-EVENT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The event is raised when the referenced data elements are received.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:RTE-EVENT" />
      <xsd:group ref="AR:DATA-RECEIVED-EVENT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class _instanceRef::DataReceivedEvent_data -->
  <xsd:group name="DATA-RECEIVED-EVENT--DATA-IREF">
    <xsd:sequence>
      <xsd:element name="R-PORT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:R-PORT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="DATA-ELEMENT-PROTOTYPE-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:DATA-ELEMENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::DataReceivedEvent_data -->
  <xsd:complexType name="DATA-RECEIVED-EVENT--DATA-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:DATA-RECEIVED-EVENT--DATA-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class RTEEvents::DataSendCompletedEvent -->
  <xsd:group name="DATA-SEND-COMPLETED-EVENT">
    <xsd:annotation>
      <xsd:documentation>The event is raised when the referenced data elements have been sent or an error occurs.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="EVENT-SOURCE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:DATA-SEND-POINT--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class RTEEvents::DataSendCompletedEvent -->
  <xsd:complexType name="DATA-SEND-COMPLETED-EVENT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The event is raised when the referenced data elements have been sent or an error occurs.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:RTE-EVENT" />
      <xsd:group ref="AR:DATA-SEND-COMPLETED-EVENT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class DataElements::DataSendPoint -->
  <xsd:group name="DATA-SEND-POINT">
    <xsd:annotation>
      <xsd:documentation>A DataSendPoint specifies that a RunnableEntity explicitly sends a certain DataElementPrototype.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DATA-ELEMENT-IREF" type="AR:DATA-SEND-POINT--DATA-ELEMENT-IREF" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DataElements::DataSendPoint -->
  <xsd:complexType name="DATA-SEND-POINT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A DataSendPoint specifies that a RunnableEntity explicitly sends a certain DataElementPrototype.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:DATA-SEND-POINT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="DATA-SEND-POINT--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="DATA-SEND-POINT" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class _instanceRef::DataSendPoint_dataElement -->
  <xsd:group name="DATA-SEND-POINT--DATA-ELEMENT-IREF">
    <xsd:sequence>
      <xsd:element name="P-PORT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:P-PORT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="DATA-ELEMENT-PROTOTYPE-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:DATA-ELEMENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::DataSendPoint_dataElement -->
  <xsd:complexType name="DATA-SEND-POINT--DATA-ELEMENT-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:DATA-SEND-POINT--DATA-ELEMENT-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class LinCommunication::DataTiming -->
  <xsd:group name="DATA-TIMING">
    <xsd:annotation>
      <xsd:documentation>A LIN specific extension of the common RelativelyScheduledTiming. The extension maps the LIN specific free data frames into SystemTemplate. The base type keeps scheduling for those free data frames applicable.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="FREE-FORMAT" type="AR:FREE-FORMAT" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class LinCommunication::DataTiming -->
  <xsd:complexType name="DATA-TIMING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A LIN specific extension of the common RelativelyScheduledTiming. The extension maps the LIN specific free data frames into SystemTemplate. The base type keeps scheduling for those free data frames applicable.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:RELATIVELY-SCHEDULED-TIMING" />
      <xsd:group ref="AR:DATA-TIMING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class DataElements::DataWriteAccess -->
  <xsd:group name="DATA-WRITE-ACCESS">
    <xsd:annotation>
      <xsd:documentation>The presence of a DataWriteAccess means that the RunnableEntity will potentially modify the DataElementPrototype in the PPortPrototype. The RunnableEntity has free access to the DataElementPrototype while it is running. The RunnableEntity has the responsibility to make sure that the DataElementPrototype is in a consistent state when it returns. When using DataWriteAccess the new values of the DataElementPrototype is not made available via the communication infrastructure before the RunnableEntity returns (exits the "Running" state).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DATA-ELEMENT-IREF" type="AR:DATA-WRITE-ACCESS--DATA-ELEMENT-IREF" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DataElements::DataWriteAccess -->
  <xsd:complexType name="DATA-WRITE-ACCESS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The presence of a DataWriteAccess means that the RunnableEntity will potentially modify the DataElementPrototype in the PPortPrototype. The RunnableEntity has free access to the DataElementPrototype while it is running. The RunnableEntity has the responsibility to make sure that the DataElementPrototype is in a consistent state when it returns. When using DataWriteAccess the new values of the DataElementPrototype is not made available via the communication infrastructure before the RunnableEntity returns (exits the "Running" state).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:DATA-WRITE-ACCESS" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class _instanceRef::DataWriteAccess_dataElement -->
  <xsd:group name="DATA-WRITE-ACCESS--DATA-ELEMENT-IREF">
    <xsd:sequence>
      <xsd:element name="P-PORT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:P-PORT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="DATA-ELEMENT-PROTOTYPE-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:DATA-ELEMENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::DataWriteAccess_dataElement -->
  <xsd:complexType name="DATA-WRITE-ACCESS--DATA-ELEMENT-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:DATA-WRITE-ACCESS--DATA-ELEMENT-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Datatypes::Datatype -->
  <xsd:group name="DATATYPE">
    <xsd:annotation>
      <xsd:documentation>Abstract base class for user defined (and AUTOSAR predefined) datatypes.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <xsd:simpleType name="DATATYPE--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="ARRAY-TYPE" />
      <xsd:enumeration value="BOOLEAN-TYPE" />
      <xsd:enumeration value="CHAR-TYPE" />
      <xsd:enumeration value="COMPOSITE-TYPE" />
      <xsd:enumeration value="DATATYPE" />
      <xsd:enumeration value="INTEGER-TYPE" />
      <xsd:enumeration value="OPAQUE-TYPE" />
      <xsd:enumeration value="PRIMITIVE-TYPE" />
      <xsd:enumeration value="REAL-TYPE" />
      <xsd:enumeration value="RECORD-TYPE" />
      <xsd:enumeration value="STRING-TYPE" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class CoreCommunication::DcmIPdu -->
  <xsd:group name="DCM-I-PDU">
    <xsd:annotation>
      <xsd:documentation>Represents the I-PDU's handled by Dcm.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class CoreCommunication::DcmIPdu -->
  <xsd:complexType name="DCM-I-PDU" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Represents the I-PDU's handled by Dcm.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:I-PDU" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Fibex4Multiplatform::DefaultValueElement -->
  <xsd:group name="DEFAULT-VALUE-ELEMENT">
    <xsd:annotation>
      <xsd:documentation>The default value consists of a number of elements. Each element is one byte long and the number of elements is specified by SduLength.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ELEMENT-BYTE-VALUE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The integer value of a freely defined data byte.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="ELEMENT-POSITION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This attribute specifies the byte position of the
element within the default value</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Fibex4Multiplatform::DefaultValueElement -->
  <xsd:complexType name="DEFAULT-VALUE-ELEMENT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The default value consists of a number of elements. Each element is one byte long and the number of elements is specified by SduLength.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:DEFAULT-VALUE-ELEMENT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ApplicationAttributes::DelegatedPortAnnotation -->
  <xsd:group name="DELEGATED-PORT-ANNOTATION">
    <xsd:annotation>
      <xsd:documentation>Annotation to a "delegated port" to specify the Signal Fan In or Signal Fan Out inside the Composition Type.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SIGNAL-FAN" type="AR:SIGNAL-FAN-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Specify the Signal Fan In or Signal Fan Out inside the Composition Type</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ApplicationAttributes::DelegatedPortAnnotation -->
  <xsd:complexType name="DELEGATED-PORT-ANNOTATION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Annotation to a "delegated port" to specify the Signal Fan In or Signal Fan Out inside the Composition Type.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:GENERAL-ANNOTATION" />
      <xsd:group ref="AR:DELEGATED-PORT-ANNOTATION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Composition::DelegationConnectorPrototype -->
  <xsd:group name="DELEGATION-CONNECTOR-PROTOTYPE">
    <xsd:annotation>
      <xsd:documentation>A delegation connector delegates one inner PortPrototype  (a port of a component that is used inside the composition) to a outer PortPrototype of compatible type that belongs directly to the composition (a port that is owned by the composition).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="INNER-PORT-IREF" type="AR:DELEGATION-CONNECTOR-PROTOTYPE--INNER-PORT-IREF" minOccurs="0" maxOccurs="1" />
      <xsd:element name="OUTER-PORT-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:PORT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Composition::DelegationConnectorPrototype -->
  <xsd:complexType name="DELEGATION-CONNECTOR-PROTOTYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A delegation connector delegates one inner PortPrototype  (a port of a component that is used inside the composition) to a outer PortPrototype of compatible type that belongs directly to the composition (a port that is owned by the composition).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:DELEGATION-CONNECTOR-PROTOTYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class _instanceRef::DelegationConnectorPrototype_innerPort -->
  <xsd:group name="DELEGATION-CONNECTOR-PROTOTYPE--INNER-PORT-IREF">
    <xsd:sequence>
      <xsd:element name="COMPONENT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMPONENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PORT-PROTOTYPE-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:PORT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::DelegationConnectorPrototype_innerPort -->
  <xsd:complexType name="DELEGATION-CONNECTOR-PROTOTYPE--INNER-PORT-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:DELEGATION-CONNECTOR-PROTOTYPE--INNER-PORT-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ECUResourceTemplate::DelegationHWConnection -->
  <xsd:group name="DELEGATION-HW-CONNECTION">
    <xsd:annotation>
      <xsd:documentation>Is used to connect HWPorts of a HWContainer with HWPorts of the contained HWElements.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="INNER-PORT-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:HW-PORT--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="OUTER-PORT-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:HW-PORT--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUResourceTemplate::DelegationHWConnection -->
  <xsd:complexType name="DELEGATION-HW-CONNECTION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Is used to connect HWPorts of a HWContainer with HWPorts of the contained HWElements.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-CONNECTION" />
      <xsd:group ref="AR:DELEGATION-HW-CONNECTION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Implementation::Dependency -->
  <xsd:group name="DEPENDENCY">
    <xsd:annotation>
      <xsd:documentation>General dependency, typically on the existence of another artifact.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="USAGES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="USAGE" type="AR:DEPENDENCY-USAGE-ENUM" minOccurs="0" maxOccurs="unbounded">
              <xsd:annotation>
                <xsd:documentation>Specification during for which process step(s) this dependency is required.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class Implementation::DependencyOnFile -->
  <xsd:group name="DEPENDENCY-ON-FILE">
    <xsd:annotation>
      <xsd:documentation>Dependency on the existence of a certain file.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="XFILE" type="AR:XFILE" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Implementation::DependencyOnFile -->
  <xsd:complexType name="DEPENDENCY-ON-FILE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Dependency on the existence of a certain file.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:DEPENDENCY" />
      <xsd:group ref="AR:DEPENDENCY-ON-FILE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Implementation::DependencyOnLibrary -->
  <xsd:group name="DEPENDENCY-ON-LIBRARY">
    <xsd:annotation>
      <xsd:documentation>A specific file dependency: without the library that implementation cannot be used (compiled, linked, executed, ...).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="MAX-VERSION" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Maximum version compatible with implementation. If not set, there is limitation on the upper version.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MIN-VERSION" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Minimum version compatible with implementation.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Implementation::DependencyOnLibrary -->
  <xsd:complexType name="DEPENDENCY-ON-LIBRARY" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A specific file dependency: without the library that implementation cannot be used (compiled, linked, executed, ...).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:DEPENDENCY" />
      <xsd:group ref="AR:DEPENDENCY-ON-FILE" />
      <xsd:group ref="AR:DEPENDENCY-ON-LIBRARY" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="DEPENDENCY-ON-LIBRARY--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="DEPENDENCY-ON-LIBRARY" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class ECUCParameterDefTemplate::DerivedBooleanParamDef -->
  <xsd:group name="DERIVED-BOOLEAN-PARAM-DEF">
    <xsd:annotation>
      <xsd:documentation>Derived value is of type Boolean</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ECUCParameterDefTemplate::DerivedBooleanParamDef -->
  <xsd:complexType name="DERIVED-BOOLEAN-PARAM-DEF" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Derived value is of type Boolean</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PARAM-CONF-MULTIPLICITY" />
      <xsd:group ref="AR:COMMON-CONFIGURATION-ATTRIBUTES" />
      <xsd:group ref="AR:CONFIG-PARAMETER" />
      <xsd:group ref="AR:BOOLEAN-PARAM-DEF" />
      <xsd:group ref="AR:DERIVED-PARAM-TYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUCParameterDefTemplate::DerivedEnumerationParamDef -->
  <xsd:group name="DERIVED-ENUMERATION-PARAM-DEF">
    <xsd:annotation>
      <xsd:documentation>Derived value is an Enumeration.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ECUCParameterDefTemplate::DerivedEnumerationParamDef -->
  <xsd:complexType name="DERIVED-ENUMERATION-PARAM-DEF" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Derived value is an Enumeration.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PARAM-CONF-MULTIPLICITY" />
      <xsd:group ref="AR:COMMON-CONFIGURATION-ATTRIBUTES" />
      <xsd:group ref="AR:CONFIG-PARAMETER" />
      <xsd:group ref="AR:ENUMERATION-PARAM-DEF" />
      <xsd:group ref="AR:DERIVED-PARAM-TYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUCParameterDefTemplate::DerivedFloatParamDef -->
  <xsd:group name="DERIVED-FLOAT-PARAM-DEF">
    <xsd:annotation>
      <xsd:documentation>Derived value is of type Float</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ECUCParameterDefTemplate::DerivedFloatParamDef -->
  <xsd:complexType name="DERIVED-FLOAT-PARAM-DEF" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Derived value is of type Float</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PARAM-CONF-MULTIPLICITY" />
      <xsd:group ref="AR:COMMON-CONFIGURATION-ATTRIBUTES" />
      <xsd:group ref="AR:CONFIG-PARAMETER" />
      <xsd:group ref="AR:FLOAT-PARAM-DEF" />
      <xsd:group ref="AR:DERIVED-PARAM-TYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUCParameterDefTemplate::DerivedIntegerParamDef -->
  <xsd:group name="DERIVED-INTEGER-PARAM-DEF">
    <xsd:annotation>
      <xsd:documentation>Derived value is of type Integer.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ECUCParameterDefTemplate::DerivedIntegerParamDef -->
  <xsd:complexType name="DERIVED-INTEGER-PARAM-DEF" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Derived value is of type Integer.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PARAM-CONF-MULTIPLICITY" />
      <xsd:group ref="AR:COMMON-CONFIGURATION-ATTRIBUTES" />
      <xsd:group ref="AR:CONFIG-PARAMETER" />
      <xsd:group ref="AR:INTEGER-PARAM-DEF" />
      <xsd:group ref="AR:DERIVED-PARAM-TYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUCParameterDefTemplate::DerivedParamType -->
  <xsd:group name="DERIVED-PARAM-TYPE">
    <xsd:annotation>
      <xsd:documentation>Allows to define configuration items that are calculated based on the value of 
* other parameters values
* elements (attributes /classes) defined in other AUTOSAR templates such as System template and SW component template.
A calculation definition is given which defines how Configuration Editors and
Generators can calculate the value from other values when needed to display/use
the configuration item.
The actual value is stored in the "value" attribute of the derived parameter.</xsd:documentation>
      <xsd:appinfo source="tags">xml.sequenceOffset="40"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CALCULATION-FORMULA" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Definition of the formula used to calculate the value of the configuration element.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="CALCULATION-LANGUAGE" type="AR:CALCULATION-LANGUAGE" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Definition of the languag used to specify the formula in attribute calculationFormula.
Currentlfy, only informal definition of the formula is supported.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class ECUCParameterDefTemplate::DerivedStringParamDef -->
  <xsd:group name="DERIVED-STRING-PARAM-DEF">
    <xsd:annotation>
      <xsd:documentation>Derived value is of type String.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ECUCParameterDefTemplate::DerivedStringParamDef -->
  <xsd:complexType name="DERIVED-STRING-PARAM-DEF" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Derived value is of type String.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PARAM-CONF-MULTIPLICITY" />
      <xsd:group ref="AR:COMMON-CONFIGURATION-ATTRIBUTES" />
      <xsd:group ref="AR:CONFIG-PARAMETER" />
      <xsd:group ref="AR:STRING-PARAM-DEF" />
      <xsd:group ref="AR:DERIVED-PARAM-TYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ServiceNeeds::DiagnosticCommunicationNeeds -->
  <xsd:group name="DIAGNOSTIC-COMMUNICATION-NEEDS">
    <xsd:annotation>
      <xsd:documentation>Specifies the abstract needs on the configuration of the  Diagnostic Communication Manager for one "user".

Details are an expert task for AUTOSAR Release 4.0.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ServiceNeeds::DiagnosticCommunicationNeeds -->
  <xsd:complexType name="DIAGNOSTIC-COMMUNICATION-NEEDS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specifies the abstract needs on the configuration of the  Diagnostic Communication Manager for one "user".

Details are an expert task for AUTOSAR Release 4.0.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ServiceNeeds::DiagnosticEventNeeds -->
  <xsd:group name="DIAGNOSTIC-EVENT-NEEDS">
    <xsd:annotation>
      <xsd:documentation>Specifies the abstract needs on the configuration of the Diagnostic Event Manager for one diagnostic event. Its name can be regarded as a symbol identifying the diagnostic event from the viewpoint of the component or module which owns this class.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ServiceNeeds::DiagnosticEventNeeds -->
  <xsd:complexType name="DIAGNOSTIC-EVENT-NEEDS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specifies the abstract needs on the configuration of the Diagnostic Event Manager for one diagnostic event. Its name can be regarded as a symbol identifying the diagnostic event from the viewpoint of the component or module which owns this class.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Peripherals::DigitalIO -->
  <xsd:group name="DIGITAL-IO">
    <xsd:annotation>
      <xsd:documentation>Digital Input/Output peripherals provide the capability to send/receive data in a digital manner. Each digital input has an electrical range. When the voltage is less than a specified level, the input is represents logical low '0'. On the opposite when the voltage is higher than a specified value the input represents logical high '1'. A digital I/O can usually be programmed to be either an input or output. It can also be programmed to logically invert the input or output. The maximum frequency of a digital input or output is related to how fast the PU can read or write to the digital I/O register. It's very common for a digital I/O to have different functionality. One example is when a timer has an external clock signal associated with a digital I/O. In this case the maximum frequency is defined by the performance of the timer counter and can be found in the electrical characteristic of the peripheral datasheet.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="EDGE-DETECTION" type="AR:DIGITAL-IO-EDGE-DETECTION-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>A general digital input can be enabled to trigger an interrupt on a falling, rising or both edges of an input signal. A clock, compare or count input on a timer can be programmed to increase, decrease or store the timer value if a change on the input pin has occurred. The condition for this change can be programmed to trigger an event  in the same manner as for a digital input.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Peripherals::DigitalIO -->
  <xsd:complexType name="DIGITAL-IO" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Digital Input/Output peripherals provide the capability to send/receive data in a digital manner. Each digital input has an electrical range. When the voltage is less than a specified level, the input is represents logical low '0'. On the opposite when the voltage is higher than a specified value the input represents logical high '1'. A digital I/O can usually be programmed to be either an input or output. It can also be programmed to logically invert the input or output. The maximum frequency of a digital input or output is related to how fast the PU can read or write to the digital I/O register. It's very common for a digital I/O to have different functionality. One example is when a timer has an external clock signal associated with a digital I/O. In this case the maximum frequency is defined by the performance of the timer counter and can be found in the electrical characteristic of the peripheral datasheet.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-ELEMENT" />
      <xsd:group ref="AR:PERIPHERAL" />
      <xsd:group ref="AR:DIGITAL-IO" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUElectronics::DiscreteECUElectronics -->
  <xsd:group name="DISCRETE-ECU-ELECTRONICS">
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ECUElectronics::DiscreteECUElectronics -->
  <xsd:complexType name="DISCRETE-ECU-ELECTRONICS" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-ELEMENT" />
      <xsd:group ref="AR:ECU-ELECTRONICS" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class SensorActuator::DisplayHW -->
  <xsd:group name="DISPLAY-HW">
    <xsd:annotation>
      <xsd:documentation>The Display HW element derives from HW Sensor Actuator and can be connected to a PU via a serial or parallel interface.
For the parallel mode the display can be connected to the data bus and address bus of a PU or to a peripheral.
The most common serial interface for displays are:
- I2C
- SPI
The most common physical interface for high resolution displays are the LVDS interface (Low Voltage Differential Signalling). This interface has three different lines for colours (RGB) and additional lines for control signals.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="BACKLIGHT" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines whether the display has a background lighting. This eases the readability of the displays during bad daylight conditions.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="BRIGHTNESS" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines the visibility of the display.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="BTYPE-OF-CHARACTERS" type="AR:DISPLAY-HW-TYPE-OF-CHARACTERS-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>If the display can present numerical, alpha-numerical, semi-graphical or graphical objects.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="CHARACTER-GENERATOR" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>If the display has an in-built character generator.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="CHARACTER-SET" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines which character set that can be handled by the display. There is a number of standardised character sets like ISO-8859-1 or Unicode.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="COLOUR" type="AR:DISPLAY-HW-COLOUR-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>If the display can show objects in monochrome, grey scale or in colour.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="RESOLUTION-RATION" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines the ratio of the display resolution in horizontal versus vertical direction (e.g. 16 to 9).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="RESOLUTION-X" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines the number of the smallest graphical elements which can be displayed in horizontal direction.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="RESOLUTION-Y" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines the number of the smallest graphical elements which can be displayed in vertical direction.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="RESPONSE-TIME" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines how long it takes for the display to show a changed element at -20 degree C.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="VIEWING-ANGLE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines the angle range where the display can be observed.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SensorActuator::DisplayHW -->
  <xsd:complexType name="DISPLAY-HW" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The Display HW element derives from HW Sensor Actuator and can be connected to a PU via a serial or parallel interface.
For the parallel mode the display can be connected to the data bus and address bus of a PU or to a peripheral.
The most common serial interface for displays are:
- I2C
- SPI
The most common physical interface for high resolution displays are the LVDS interface (Low Voltage Differential Signalling). This interface has three different lines for colours (RGB) and additional lines for control signals.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-ELEMENT" />
      <xsd:group ref="AR:SENSOR-ACTUATOR-HW" />
      <xsd:group ref="AR:DISPLAY-HW" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Units::DisplayName -->
  <xsd:group name="DISPLAY-NAME">
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Units::DisplayName -->
  <xsd:complexType name="DISPLAY-NAME" abstract="false" mixed="true">
    <xsd:choice minOccurs="0" maxOccurs="unbounded" />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class AdminData::DocRevision -->
  <xsd:group name="DOC-REVISION">
    <xsd:annotation>
      <xsd:documentation>Use &lt;docRevision&gt; , to generate information on the corresponding document version.</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="DOC-REVISION";msr.id="type__DOC-REVISION_TYPE";xml.sequence.offset="20"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="REVISION-LABEL" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Use revisionLabel, to enter the version number of the document, or the document section to which administrative is applied.. The syntax is free and refers to the configuration management plan respectively the version management tool being used.
Therefore it is still kept as String.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="DOC-REVISION_TYPE__REVISION-LABEL";xml.sequenceOffset="20"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="REVISION-LABEL-P-1" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Use revisionLabelP1, to enter the version number of the ** of the document, or the document section to which administrative is applied.. The syntax is free and refers to the configuration management plan respectively the version management tool being used. This element is used, if the document or document section is the result of a merge process in which two branches are merged in to one new revision.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="DOC-REVISION_TYPE__REVISION-LABEL-P1";msr.tbdString="true";xml.sequenceOffset="30"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="REVISION-LABEL-P-2" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Use revisionLabelP1, to enter the version number of the ** of the document, or the document section to which administrative is applied.. The syntax is free and refers to the configuration management plan respectively the version management tool being used. This element is used, if the document or document section is the result of a merge process in which two branches are merged in to one new revision.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="DOC-REVISION_TYPE__REVISION-LABEL-P2";msr.tbdString="true";xml.sequenceOffset="40"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="STATE" type="AR:SL-DATA-10" minOccurs="0" maxOccurs="1" />
      <xsd:element name="ISSUED-BY" type="AR:SL-DATA-10" minOccurs="0" maxOccurs="1" />
      <xsd:element name="DATE" type="xsd:dateTime" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This specifies the time, when the object in question was released</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="DOC-REVISION_TYPE__DATE";xml.sequenceOffset="80"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MODIFICATIONS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="MODIFICATION" type="AR:MODIFICATION" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class AdminData::DocRevision -->
  <xsd:complexType name="DOC-REVISION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Use &lt;docRevision&gt; , to generate information on the corresponding document version.</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="DOC-REVISION";msr.id="type__DOC-REVISION_TYPE";xml.sequence.offset="20"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:DOC-REVISION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class CoreCommunication::DynamicPart -->
  <xsd:group name="DYNAMIC-PART">
    <xsd:annotation>
      <xsd:documentation>Dynamic part of a multiplexed I-Pdu. 
Reserved space which is used to transport varying SignalIPdus at the same position, controlled by the corresponding selectorFieldCode.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SELECTOR-FIELD-CODE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The selector field is part of a multiplexed IPdu. It consists of contiguous bits. The value of the selector field selects the layout of the multiplexed part of the IPdu.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class CoreCommunication::DynamicPart -->
  <xsd:complexType name="DYNAMIC-PART" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Dynamic part of a multiplexed I-Pdu. 
Reserved space which is used to transport varying SignalIPdus at the same position, controlled by the corresponding selectorFieldCode.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:MULTIPLEXED-PART" />
      <xsd:group ref="AR:DYNAMIC-PART" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ECUResourceTemplate::ECU -->
  <xsd:group name="ECU">
    <xsd:annotation>
      <xsd:documentation>The ECU provides information about an ECU and its internal hardware elements. The described hardware elements are related to some extent to basic software configuration and the AUTOSAR generation process.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ECU-ABSTRACTION-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMPONENT-TYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUResourceTemplate::ECU -->
  <xsd:complexType name="ECU" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The ECU provides information about an ECU and its internal hardware elements. The described hardware elements are related to some extent to basic software configuration and the AUTOSAR generation process.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-ELEMENT" />
      <xsd:group ref="AR:HW-ELEMENT-CONTAINER" />
      <xsd:group ref="AR:ECU" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="ECU--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="ECU" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class Peripherals::ECUCommunicationPort -->
  <xsd:group name="ECU-COMMUNICATION-PORT">
    <xsd:annotation>
      <xsd:documentation>A specialization of a Communication HW Port that is availabe for the inter ECU communication.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Peripherals::ECUCommunicationPort -->
  <xsd:complexType name="ECU-COMMUNICATION-PORT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A specialization of a Communication HW Port that is availabe for the inter ECU communication.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-PORT" />
      <xsd:group ref="AR:PERIPHERAL-HW-PORT" />
      <xsd:group ref="AR:COMMUNICATION-HW-PORT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="ECU-COMMUNICATION-PORT--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="ECU-COMMUNICATION-PORT" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class ECUElectronics::ECUElectronics -->
  <xsd:group name="ECU-ELECTRONICS">
    <xsd:annotation>
      <xsd:documentation>The abstract class ECU Electronics HW Element contains all elements and attributes common for all kind of ECU Electronics.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CAN-BE-DISABLED" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines if the ECU Electronic can be enabled and disabled.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class ECUResourceMapping::ECUMapping -->
  <xsd:group name="ECU-MAPPING">
    <xsd:annotation>
      <xsd:documentation>ECUMapping allows to assign an ECU hardware type (defined in the ECU Resource Template) to an ECUInstance used in a physical topology.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="COMM-CONTROLLER-MAPPINGS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="COMMUNICATION-CONTROLLER-MAPPING" type="AR:COMMUNICATION-CONTROLLER-MAPPING" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="ECU-INSTANCE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:ECU-INSTANCE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="ECU-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:ECU--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PORT-MAPPINGS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="HW-PORT-MAPPING" type="AR:HW-PORT-MAPPING" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUResourceMapping::ECUMapping -->
  <xsd:complexType name="ECU-MAPPING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>ECUMapping allows to assign an ECU hardware type (defined in the ECU Resource Template) to an ECUInstance used in a physical topology.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:ECU-MAPPING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ExecutionTime::ECUPrototype -->
  <xsd:group name="ECU-PROTOTYPE">
    <xsd:sequence>
      <xsd:element name="E-CU-TREF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:ECU--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ExecutionTime::ECUPrototype -->
  <xsd:complexType name="ECU-PROTOTYPE" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:ECU-PROTOTYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Inlines::EType -->
  <xsd:group name="E-TYPE">
    <xsd:annotation>
      <xsd:documentation>This is an emphasized text. As a compromise it contains some rendering oriented attributes such as color and font.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__E_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Inlines::EType -->
  <xsd:complexType name="E-TYPE" abstract="false" mixed="true">
    <xsd:annotation>
      <xsd:documentation>This is an emphasized text. As a compromise it contains some rendering oriented attributes such as color and font.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__E_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice minOccurs="0" maxOccurs="unbounded" />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Components::EcuAbstractionComponentType -->
  <xsd:group name="ECU-ABSTRACTION-COMPONENT-TYPE">
    <xsd:annotation>
      <xsd:documentation>The ECUAbstraction is a special AtomicSoftwareComponent that sits between a component that wants to access ECUperiphery and the Microcontroller Abstraction. The EcuAbstractionComponentType introduces the possibility to link from the software representation to its hardware description provided by the ECU Resource Template.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="BSW-MODULE-DESCRIPTION-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="BSW-MODULE-DESCRIPTION-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:BSW-MODULE-DESCRIPTION--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="HARDWARE-ELEMENT-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="HARDWARE-ELEMENT-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:HW-ELEMENT--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Components::EcuAbstractionComponentType -->
  <xsd:complexType name="ECU-ABSTRACTION-COMPONENT-TYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The ECUAbstraction is a special AtomicSoftwareComponent that sits between a component that wants to access ECUperiphery and the Microcontroller Abstraction. The EcuAbstractionComponentType introduces the possibility to link from the software representation to its hardware description provided by the ECU Resource Template.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:COMPONENT-TYPE" />
      <xsd:group ref="AR:ECU-ABSTRACTION-COMPONENT-TYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUCDescriptionTemplate::EcuConfiguration -->
  <xsd:group name="ECU-CONFIGURATION">
    <xsd:annotation>
      <xsd:documentation>This represents the anchor point of the ECU configuration description.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ECU-EXTRACT-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SYSTEM--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="ECU-SW-COMPOSITION-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:ECU-SW-COMPOSITION--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="MODULE-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="MODULE-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:MODULE-CONFIGURATION--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUCDescriptionTemplate::EcuConfiguration -->
  <xsd:complexType name="ECU-CONFIGURATION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This represents the anchor point of the ECU configuration description.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:ECU-CONFIGURATION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class CoreTopology::EcuInstance -->
  <xsd:group name="ECU-INSTANCE">
    <xsd:annotation>
      <xsd:documentation>ECUInstances are used to define the ECUs used in the topology. The type of the ECU is defined by a reference to an ECU specified with the ECU resource description.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ASSOCIATED-I-PDU-GROUP-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="ASSOCIATED-I-PDU-GROUP-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:I-PDU-GROUP--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="COM-CONFIGURATION-ID" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This ID is returned by a call to Com_GetConfigurationId()</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="COM-PROCESSING-PERIOD" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The COM scheduling time is used in order to be able to calculate the worst case bus timing. The processing period shall be specified AUTOSAR conform in seconds.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="COMM-CONTROLLERS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="CAN-COMMUNICATION-CONTROLLER" type="AR:CAN-COMMUNICATION-CONTROLLER" />
            <xsd:element name="COMMUNICATION-CONTROLLER" type="AR:COMMUNICATION-CONTROLLER" />
            <xsd:element name="FLEXRAY-COMMUNICATION-CONTROLLER" type="AR:FLEXRAY-COMMUNICATION-CONTROLLER" />
            <xsd:element name="LIN-MASTER" type="AR:LIN-MASTER" />
            <xsd:element name="LIN-SLAVE" type="AR:LIN-SLAVE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="CONNECTORS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="COMMUNICATION-CONNECTOR" type="AR:COMMUNICATION-CONNECTOR" />
            <xsd:element name="FLEX-RAY-COMMUNICATION-CONNECTOR" type="AR:FLEX-RAY-COMMUNICATION-CONNECTOR" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="DIAGNOSTIC-ADDRESS" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>An ECU specific ID for responses of diagnostic routines.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PDU-R-CONFIGURATION-ID" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>unique PDURconfiguration identifier</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="RESPONSE-ADDRESSS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="RESPONSE-ADDRESS" type="xsd:integer" minOccurs="0" maxOccurs="unbounded">
              <xsd:annotation>
                <xsd:documentation>An ECU specific ID for responses of diagnostic routines.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SLEEP-MODE-SUPPORTED" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Specifies whether the ECU instance may be put to a "low power mode" TRUE: sleep mode is supported FALSE: sleep mode is not supported 

Note: This flag may only be set to TRUE if the feature is supported by both hardware and basic software.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="WAKE-UP-OVER-BUS-SUPPORTED" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Driver support for wakeup over Bus.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class CoreTopology::EcuInstance -->
  <xsd:complexType name="ECU-INSTANCE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>ECUInstances are used to define the ECUs used in the topology. The type of the ECU is defined by a reference to an ECU specified with the ECU resource description.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:ECU-INSTANCE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="ECU-INSTANCE--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="ECU-INSTANCE" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class ECUCParameterDefTemplate::EcuParameterDefinition -->
  <xsd:group name="ECU-PARAMETER-DEFINITION">
    <xsd:annotation>
      <xsd:documentation>This represents the anchor point of an ECU Configuration Parameter Definition within the AUTOSAR templates structure.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="MODULE-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="MODULE-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:MODULE-DEF--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUCParameterDefTemplate::EcuParameterDefinition -->
  <xsd:complexType name="ECU-PARAMETER-DEFINITION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This represents the anchor point of an ECU Configuration Parameter Definition within the AUTOSAR templates structure.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:ECU-PARAMETER-DEFINITION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class SWmapping::EcuResourceEstimation -->
  <xsd:group name="ECU-RESOURCE-ESTIMATION">
    <xsd:annotation>
      <xsd:documentation>Resource estimations for RTE and BSW of a single ECU instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="BSW-RESOURCE-ESTIMATION" type="AR:RESOURCE-CONSUMPTION" minOccurs="0" maxOccurs="1" />
      <xsd:element name="ECU-INSTANCE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:ECU-INSTANCE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="RTE-RESOURCE-ESTIMATION" type="AR:RESOURCE-CONSUMPTION" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SW-COMP-TO-ECU-MAPPING-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SW-COMP-TO-ECU-MAPPING-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:SWC-TO-ECU-MAPPING--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SWmapping::EcuResourceEstimation -->
  <xsd:complexType name="ECU-RESOURCE-ESTIMATION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Resource estimations for RTE and BSW of a single ECU instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:ECU-RESOURCE-ESTIMATION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ServiceNeeds::EcuStateMgrUserNeeds -->
  <xsd:group name="ECU-STATE-MGR-USER-NEEDS">
    <xsd:annotation>
      <xsd:documentation>Specifies the abstract needs on the configuration of the ECU State  Manager for one "user". This class currently contains no attributes. Its name can be regarded as a symbol identifying the user  from the viewpoint of the component or module which owns this class.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ServiceNeeds::EcuStateMgrUserNeeds -->
  <xsd:complexType name="ECU-STATE-MGR-USER-NEEDS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specifies the abstract needs on the configuration of the ECU State  Manager for one "user". This class currently contains no attributes. Its name can be regarded as a symbol identifying the user  from the viewpoint of the component or module which owns this class.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Services::EcuSwComposition -->
  <xsd:group name="ECU-SW-COMPOSITION">
    <xsd:annotation>
      <xsd:documentation>EcuSwComposition contains the complete Software Composition in an ECU, consisting both of application software components and service components.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="COMPONENTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SERVICE-COMPONENT-PROTOTYPE" type="AR:SERVICE-COMPONENT-PROTOTYPE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="CONNECTORS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SERVICE-CONNECTOR-PROTOTYPE" type="AR:SERVICE-CONNECTOR-PROTOTYPE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="ECU-EXTRACT-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SYSTEM--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Services::EcuSwComposition -->
  <xsd:complexType name="ECU-SW-COMPOSITION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>EcuSwComposition contains the complete Software Composition in an ECU, consisting both of application software components and service components.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:ECU-SW-COMPOSITION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="ECU-SW-COMPOSITION--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="ECU-SW-COMPOSITION" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class BasicElements::ElectricalRange -->
  <xsd:group name="ELECTRICAL-RANGE">
    <xsd:annotation>
      <xsd:documentation>Specifies electrical ranges for different applications within the ECU Resource Template.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="MAX-CURRENT" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Maximum Current
Unit: A</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MAX-VOLTAGE" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Maximum voltage
Unit: V</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MIN-CURRENT" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Minimum Current
Unit: A</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MIN-VOLTAGE" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Minimum voltage
Unit: V</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="TYPICAL-CURRENT" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Typical Current
Unit: A</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="TYPICAL-VOLTAGE" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Typical voltage
Unit: V</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class BasicElements::ElectricalRange -->
  <xsd:complexType name="ELECTRICAL-RANGE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specifies electrical ranges for different applications within the ECU Resource Template.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:ELECTRICAL-RANGE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class DataMapping::EmptySignalMapping -->
  <xsd:group name="EMPTY-SIGNAL-MAPPING">
    <xsd:annotation>
      <xsd:documentation>According to the COM Specification, signal groups without signals are allowed. These have a "signalLength" = 0. In this case there shall be an "update-bit" configured.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SYSTEM-SIGNAL-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SYSTEM-SIGNAL--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DataMapping::EmptySignalMapping -->
  <xsd:complexType name="EMPTY-SIGNAL-MAPPING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>According to the COM Specification, signal groups without signals are allowed. These have a "signalLength" = 0. In this case there shall be an "update-bit" configured.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:EMPTY-SIGNAL-MAPPING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ECUCParameterDefTemplate::EnumerationLiteralDef -->
  <xsd:group name="ENUMERATION-LITERAL-DEF">
    <xsd:annotation>
      <xsd:documentation>Configuration parameter type for enumeration literals definition.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ECUCParameterDefTemplate::EnumerationLiteralDef -->
  <xsd:complexType name="ENUMERATION-LITERAL-DEF" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Configuration parameter type for enumeration literals definition.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUCParameterDefTemplate::EnumerationParamDef -->
  <xsd:group name="ENUMERATION-PARAM-DEF">
    <xsd:annotation>
      <xsd:documentation>Configuration parameter type for Enumeration.</xsd:documentation>
      <xsd:appinfo source="tags">xml.sequenceOffset="0"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DEFAULT-VALUE" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Default value of the enumeration configuration parameter. This string nees to be one of the literals specified for this enumeration.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="LITERALS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="ENUMERATION-LITERAL-DEF" type="AR:ENUMERATION-LITERAL-DEF" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUCParameterDefTemplate::EnumerationParamDef -->
  <xsd:complexType name="ENUMERATION-PARAM-DEF" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Configuration parameter type for Enumeration.</xsd:documentation>
      <xsd:appinfo source="tags">xml.sequenceOffset="0"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PARAM-CONF-MULTIPLICITY" />
      <xsd:group ref="AR:COMMON-CONFIGURATION-ATTRIBUTES" />
      <xsd:group ref="AR:CONFIG-PARAMETER" />
      <xsd:group ref="AR:ENUMERATION-PARAM-DEF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUCDescriptionTemplate::EnumerationValue -->
  <xsd:group name="ENUMERATION-VALUE">
    <xsd:annotation>
      <xsd:documentation>Representing a configuration value of definition type EnumerationParamDef</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="VALUE" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Stores the chosen literal.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUCDescriptionTemplate::EnumerationValue -->
  <xsd:complexType name="ENUMERATION-VALUE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Representing a configuration value of definition type EnumerationParamDef</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:PARAMETER-VALUE" />
      <xsd:group ref="AR:ENUMERATION-VALUE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class BasicElements::ErrorDetectionCorrection -->
  <xsd:group name="ERROR-DETECTION-CORRECTION">
    <xsd:annotation>
      <xsd:documentation>Provides information on what extra bits are used for error detection and correction.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CORRECTED-BITS" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>How many error bits can be corrected.
Unit: Bit</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="DETECTED-BITS" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>How many bit errors can be reconginsed.
Unit: Bit</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="EXTRA-BITS" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>How many extra bits are used for ensuring error detection and correction.
Unit: Bit</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class BasicElements::ErrorDetectionCorrection -->
  <xsd:complexType name="ERROR-DETECTION-CORRECTION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Provides information on what extra bits are used for error detection and correction.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:ERROR-DETECTION-CORRECTION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Timing::EventControlledTiming -->
  <xsd:group name="EVENT-CONTROLLED-TIMING">
    <xsd:annotation>
      <xsd:documentation>Specification of a event driven sending behavior. The PDU is sent "numberOfRepeats" times separated by the repeatCycleTime. If numberOfRepeats = 1, then the Pdu is sent just once.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DEBOUNCE-TIME" type="AR:TIME-RANGE-TYPE" minOccurs="0" maxOccurs="1" />
      <xsd:element name="NUMBER-OF-REPEATS" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Number of repetitions the pdu is sent from the moment the send condition has been breached.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Timing::EventControlledTiming -->
  <xsd:complexType name="EVENT-CONTROLLED-TIMING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specification of a event driven sending behavior. The PDU is sent "numberOfRepeats" times separated by the repeatCycleTime. If numberOfRepeats = 1, then the Pdu is sent just once.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:EVENT-CONTROLLED-TIMING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class InternalBehavior::ExclusiveArea -->
  <xsd:group name="EXCLUSIVE-AREA">
    <xsd:annotation>
      <xsd:documentation>Prevents an executable entity running in the area from being preempted.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class InternalBehavior::ExclusiveArea -->
  <xsd:complexType name="EXCLUSIVE-AREA" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Prevents an executable entity running in the area from being preempted.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="EXCLUSIVE-AREA--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="EXCLUSIVE-AREA" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class InternalBehavior::ExecutableEntity -->
  <xsd:group name="EXECUTABLE-ENTITY">
    <xsd:annotation>
      <xsd:documentation>Abstraction of executable code.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <xsd:simpleType name="EXECUTABLE-ENTITY--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="BSW-INTERRUPT-ENTITY" />
      <xsd:enumeration value="BSW-MODULE-ENTITY" />
      <xsd:enumeration value="BSW-SCHEDULABLE-ENTITY" />
      <xsd:enumeration value="EXECUTABLE-ENTITY" />
      <xsd:enumeration value="RUNNABLE-ENTITY" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class ExecutionTime::ExecutionTime -->
  <xsd:group name="EXECUTION-TIME">
    <xsd:annotation>
      <xsd:documentation>Base class for several means how to describe the ExecutionTime of software. The required context information is provided through this class.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ECU" type="AR:ECU-PROTOTYPE" minOccurs="0" maxOccurs="1" />
      <xsd:element name="EXCLUSIVE-AREA-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:EXCLUSIVE-AREA--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="EXTERNAL-LIBRARY-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="EXTERNAL-LIBRARY-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:DEPENDENCY-ON-LIBRARY--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="HARDWARE-CONFIGURATION" type="AR:HARDWARE-CONFIGURATION" minOccurs="0" maxOccurs="1" />
      <xsd:element name="MEMORY-SECTION-LOCATIONS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="MEMORY-SECTION-LOCATION" type="AR:MEMORY-SECTION-LOCATION" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="RUNNABLE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:EXECUTABLE-ENTITY--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SOFTWARE-CONTEXT" type="AR:SOFTWARE-CONTEXT" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ExecutionTime::ExecutionTime -->
  <xsd:complexType name="EXECUTION-TIME" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Base class for several means how to describe the ExecutionTime of software. The required context information is provided through this class.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:EXECUTION-TIME" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class FibexCore::FibexElement -->
  <xsd:group name="FIBEX-ELEMENT">
    <xsd:annotation>
      <xsd:documentation>ASAM FIBEX elements specifying Communication and Topology.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <xsd:simpleType name="FIBEX-ELEMENT--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="CAN-CLUSTER" />
      <xsd:enumeration value="COMMUNICATION-CLUSTER" />
      <xsd:enumeration value="DCM-I-PDU" />
      <xsd:enumeration value="ECU-INSTANCE" />
      <xsd:enumeration value="FIBEX-ELEMENT" />
      <xsd:enumeration value="FLEXRAY-CLUSTER" />
      <xsd:enumeration value="FRAME" />
      <xsd:enumeration value="GATEWAY" />
      <xsd:enumeration value="I-PDU" />
      <xsd:enumeration value="I-PDU-GROUP" />
      <xsd:enumeration value="I-SIGNAL" />
      <xsd:enumeration value="LIN-CLUSTER" />
      <xsd:enumeration value="MULTIPLEXED-I-PDU" />
      <xsd:enumeration value="N-PDU" />
      <xsd:enumeration value="NM-PDU" />
      <xsd:enumeration value="PDU" />
      <xsd:enumeration value="SIGNAL-I-PDU" />
      <xsd:enumeration value="SUBSTITUTION-FRAME" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class FlexrayTopology::FlexRayCommunicationConnector -->
  <xsd:group name="FLEX-RAY-COMMUNICATION-CONNECTOR">
    <xsd:annotation>
      <xsd:documentation>FlexRay specific attributes to the CommunicationConnector</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="WAKE-UP-CHANNEL" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Referenced channel used by the node to send a wakeup pattern. (pWakeupChannel)</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class FlexrayTopology::FlexRayCommunicationConnector -->
  <xsd:complexType name="FLEX-RAY-COMMUNICATION-CONNECTOR" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>FlexRay specific attributes to the CommunicationConnector</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:COMMUNICATION-CONNECTOR" />
      <xsd:group ref="AR:FLEX-RAY-COMMUNICATION-CONNECTOR" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class TransportProtocols::FlexRayTpChannel -->
  <xsd:group name="FLEX-RAY-TP-CHANNEL">
    <xsd:annotation>
      <xsd:documentation>A channel is a group of connections sharing several properties.

The FlexRay Transport Layer supports several channels. These channels can work concurrently, thus each of them requires its own state machine and management data structures and its own PDU-IDs.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ACK-TYPE" type="AR:TP-ACK-TYPE" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Type of Acknowledgement.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="EXTENDED-ADDRESSING" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Adressing Type of this connection:
true: Two Bytes
false: One Byte</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="FLOW-CONTROL-PDU-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:N-PDU--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="MAXIMUM-MESSAGE-LENGTH" type="AR:MAXIMUM-MESSAGE-LENGTH-TYPE" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This specifies the maximum message length for the particular channel.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MINIMUM-SEPARATION-TIME" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This attribute defines the minimum amount of time (separation Time) between two succeeding CFs. Specified in seconds.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MULTICAST-SEGMENTATION" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This attribute defines whether segmentation within a 1:n connection is allowed or not.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PDU-POOLS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="N-PDU" type="AR:N-PDU" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="TIME-CS" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This parameter defines the time in seconds between the sending of two consecutive frames or between a  consecutive frame and a flow control (for Transmit Cancellation) or between reception of an flow control or Acknowledgement Frame and sending of the next consecutive frame or a  flow control (for Transmit Cancellation).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="TP-CONNECTIONS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="FLEX-RAY-TP-CONNECTION" type="AR:FLEX-RAY-TP-CONNECTION" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="TRANSMIT-CANCELLATION" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This attribute states whether Transmit Cancellation is supported on this channel.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class TransportProtocols::FlexRayTpChannel -->
  <xsd:complexType name="FLEX-RAY-TP-CHANNEL" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A channel is a group of connections sharing several properties.

The FlexRay Transport Layer supports several channels. These channels can work concurrently, thus each of them requires its own state machine and management data structures and its own PDU-IDs.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:FLEX-RAY-TP-CHANNEL" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class TransportProtocols::FlexRayTpConnection -->
  <xsd:group name="FLEX-RAY-TP-CONNECTION">
    <xsd:annotation>
      <xsd:documentation>A connection within a channel identifies the sender and the receiver of this particular communication.

The FlexRayTp module routes a Pdu through this connection.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DIRECT-TP-SDU-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:I-PDU--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="FLOW-CONTROL-PDU-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:N-PDU--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="REVERSED-TP-SDU-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:I-PDU--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SOURCE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMMUNICATION-CONNECTOR--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="TARGET-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMMUNICATION-CONNECTOR--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="TRANSMIT-PDU-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="TRANSMIT-PDU-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:N-PDU--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class TransportProtocols::FlexRayTpConnection -->
  <xsd:complexType name="FLEX-RAY-TP-CONNECTION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A connection within a channel identifies the sender and the receiver of this particular communication.

The FlexRayTp module routes a Pdu through this connection.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:FLEX-RAY-TP-CONNECTION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class FlexrayTopology::FlexrayCluster -->
  <xsd:group name="FLEXRAY-CLUSTER">
    <xsd:annotation>
      <xsd:documentation>FlexRay specific attributes to the physicalCluster</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ACTION-POINT-OFFSET" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The offset of the action point in networks</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="BIT" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Nominal bit time (= 1 / fx:SPEED). gdBit = cSamplesPerBit * gdSampleClockPeriod. Unit: seconds (gdBit)</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="BUS-GUARDIAN-ENABLE-PART" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Bus Guardian Inter Slot Gap (ISG) part that follows a guarded schedule element. Unit macroticks</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="CAS-RX-LOW-MAX" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Upper limit of the Collision Avoidance Symbol (CAS) acceptance window. Unit:bitDuration</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="CAS-RX-LOW-MIN" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Lower limit of the Collision Avoidance Symbol (CAS) acceptance window. Unit:bitDuration</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="COLD-START-ATTEMPTS" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The maximum number of times that a node in this cluster is permitted to attempt to start the cluster by initiating schedule synchronization</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="CYCLE" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Length of the cycle. Unit: seconds</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="DYNAMIC-SLOT-IDLE-PHASE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The duration of the dynamic slot idle phase in minislots.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="LISTEN-NOISE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Upper limit for the start up and wake up listen timeout in the presence of noise. Expressed as a multiple of the cluster constant pdListenTimeout. Unit microticks</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MACRO-INITIAL-OFFSET" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>number of macroticks which describe the distance between the static slot boundary and the closed macrotick boundary of the secondary time reference point using the initial configured macrotick length</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MACRO-PER-CYCLE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The number of macroticks in a communication cycle</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MACROTICK-DURATION" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Duration of the cluster wide nominal macrotick, expressed in seconds</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MAX-INITIALISATION-ERROR" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The maximum error that a node may have after initialization. Unit: seconds</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MAX-PROPAGATION-DELAY" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Maximum propagation delay of a Cluster (in seconds).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MAX-WITHOUT-CLOCK-CORRECTION-FATAL" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Threshold concerning vClockCorrectionFailedCounter. Defines the number of consecutive even/odd Cycle pairs with missing clock correction terms that will cause the protocol to transition from the POC:normal active or POC:normal passive state into the POC:halt state.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MAX-WITHOUT-CLOCK-CORRECTION-PASSIVE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Threshold concerning vClockCorrectionFailedCounter. Defines the number of consecutive even/odd Cycle pairs with missing clock correction terms that will cause the protocol to transition from the POC:normal active state to the POC:normal passive state.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MIN-PROPAGATION-DELAY" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Minimum propagation delay of a Cluster (in seconds).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MINISLOT-ACTION-POINT-OFFSET" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The Offset of the action point within a minislot. Unit: macroticks</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MINISLOT-DURATION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The duration of a minislot (dynamic segment). Unit: macroticks.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="NETWORK-IDLE-TIME" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The duration of the network idle time in macroticks</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="NETWORK-MANAGEMENT-VECTOR-LENGTH" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Length of the Network Management vector on a cluster. Unit: Bytes</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="NUMBER-OF-CYCLES" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Total number of cycles until a temporal transmission pattern is repeated. The CycleCounter of an AbsolutelyScheduledTiming is evaluated against this parameter.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="NUMBER-OF-MINISLOTS" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>number of Minislots in the dynamic segment.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="NUMBER-OF-STATIC-SLOTS" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The number of static slots in the static segment.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="OFFSET-CORRECTION-MAX" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Cluster global magnitude of the maximum permissible offset correction value Unit: seconds (gOffsetCorrectionMax)</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="OFFSET-CORRECTION-START" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Start of the offset correction phase within the Network Idle Time (NIT), expressed as the number of macroticks from the start of cycle. Unit: macroticks</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PAYLOAD-LENGTH-STATIC" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Globally configured payload length of a static frame. Unit: 16-bit WORDS.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SAMPLE-CLOCK-PERIOD" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Sample clock period. Unit: seconds</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="STATIC-SLOT-DURATION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The duration of a slot in the static segment. Unit: macroticks</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SYMBOL-WINDOW" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The duration of the symbol window. Unit: macroticks</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SYNC-NODE-MAX" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The maximum number of sync nodes allowed in the cluster</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="TRANSMISSION-START-SEQUENCE-DURATION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Number of bits in the Transmission Start Sequence [gdBits].</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="WAKE-UP-SYMBOL-RX-IDLE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Number of bits used by the node to test the duration of the idle portion of a received wake up symbol.  Unit:bitDuration</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="WAKE-UP-SYMBOL-RX-LOW" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Number of bits used by the node to test the LOW portion of a received wake up symbol. 
Unit:bitDuration</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="WAKE-UP-SYMBOL-RX-WINDOW" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Number of bits used by a node to test the overall duration of a received wake up symbol. Unit: gdBit</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="WAKE-UP-SYMBOL-TX-IDLE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Number of bits used by the node to transmit the idle part of a wake up symbol. Unit: gDbit</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="WAKE-UP-SYMBOL-TX-LOW" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Number of bits used by the node to transmit the LOW part of a wake up symbol. Unit:bitDuration</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class FlexrayTopology::FlexrayCluster -->
  <xsd:complexType name="FLEXRAY-CLUSTER" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>FlexRay specific attributes to the physicalCluster</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:COMMUNICATION-CLUSTER" />
      <xsd:group ref="AR:FLEXRAY-CLUSTER" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class FlexrayTopology::FlexrayCommunicationController -->
  <xsd:group name="FLEXRAY-COMMUNICATION-CONTROLLER">
    <xsd:annotation>
      <xsd:documentation>FlexRay bus specific communication port attributes.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ACCEPTED-STARTUP-RANGE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Expanded range of measured clock deviation allowed for startup frames during integration. Unit:microtick</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="ALLOW-HALT-DUE-TO-CLOCK" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Boolean flag that controls the transition to the POC:halt state due to a clock synchronization errors. 
If set to true, the Communication Controller is allowed to transition to POC:halt. 
If set to false, the Communication Controller will not transition to the POC:halt state but will enter or remain in the normal POC (passive State).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="ALLOW-PASSIVE-TO-ACTIVE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Number of consecutive even/odd cycle pairs that must have valid clock correction terms before the Communication Controller will be allowed to transition from the POC:normal passive state to POC:normal active state. If set to 0, the Communication Controller is not allowed to transition from POC:norm</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="CLUSTER-DRIFT-DAMPING" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The cluster drift damping factor used in clock synchronization rate correction in microticks</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="DECODING-CORRECTION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Value used by the receiver to calculate the difference between primary time reference point and secondary time reference point. Unit: Microticks (pDecodingCorrection)</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="DELAY-COMPENSATION-A" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Value used to compensate for reception delays on channel A Unit: Microticks</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="DELAY-COMPENSATION-B" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Value used to compensate for reception delays on channel B. Unit: Microticks</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="DYNAMIC-SEGMENT-ENABLE" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Boolean flag that configures the Bus Guardian Schedule
Monitoring Service to expect transmissions within
the dynamic segment.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="EXTERN-OFFSET-CORRECTION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Fixed amount added or subtracted to the calculated offset correction term to facilitate external offset correction, expressed in node-local microticks.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="EXTERN-RATE-CORRECTION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Fixed amount added or subtracted to the calculated rate correction term to facilitate external rate correction, expressed in node-local microticks.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="KEY-SLOT-ID" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>ID of the slot used to transmit the startup frame, sync frame, or designated single slot frame.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="KEY-SLOT-USED-FOR-START-UP" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Flag indicating whether the Key Slot is used to transmit a startup frame.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="KEY-SLOT-USED-FOR-SYNC" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Flag indicating whether the Key Slot is used to transmit a sync frame.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="LATEST-TX" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The number of the last minislot in which a transmission can start in the dynamic segment for the respective node</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="LISTEN-TIMEOUT" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Upper limit for the start up listen timeout and wake up listen timeout. Unit: Microticks</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MACRO-INITIAL-OFFSET-A" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Integer number of macroticks between the static slot boundary and the closest macrotick boundary of the secondary time reference point based on the nominal macrotick duration. (pMacroInitialOffset)</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MACRO-INITIAL-OFFSET-B" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Integer number of macroticks between the static slot boundary and the closest macrotick boundary of the secondary time reference point based on the nominal macrotick duration. (pMacroInitialOffset)</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MAX-DRIFT" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Maximum drift offset in microticks between two nodes that operate with unsynchronized clocks over one communication cycle.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MAXIMUM-DYNAMIC-PAYLOAD-LENGTH" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Maximum payload length for the dynamic channel of a frame in 16 bit WORDS.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MICRO-INITIAL-OFFSET-A" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Number of microticks between the closest macrotick boundary described by gMacroInitialOffset and the secondary time reference point.  The parameter depends on pDelayCompensationA and therefore it has to be set independently for each channel.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MICRO-INITIAL-OFFSET-B" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Number of microticks between the closest macrotick boundary described by gMacroInitialOffset and the secondary time reference point.  The parameter depends on pDelayCompensationB and therefore it has to be set independently for each channel.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MICRO-PER-CYCLE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The nominal number of microticks in a communication cycle</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MICRO-PER-MACRO-NOM" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Number of microticks per nominal macrotick that all implementations must support.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MICROTICK-DURATION" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Duration of a microtick. This attribute can be derived from samplePerMicrotick and gdSampleClockPeriod. 
Unit: seconds</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="OFFSET-CORRECTION-OUT" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Magnitude of the maximum permissible offset correction value. Unit:microtick (pOffsetCorrectionOut)</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="RATE-CORRECTION-OUT" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Magnitude of the maximum permissible rate correction value. Unit:Microticks (pRateCorrectionOut)</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SAMPLES-PER-MICROTICK" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Number of samples per microtick</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SINGLE-SLOT-ENABLED" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Flag indicating whether or not the node shall enter single slot mode following startup.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="START-UP-NODE" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Indicates that the node is a startup node (startup frame configured; connected to gChannels)</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SYNC-SLOT" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The number of the static slot in which a sync frame shall be sent, if a sync frame shall be sent</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="WAKE-UP-PATTERN" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Number of repetitions of the Tx-wakeup symbol to be sent during the CC_WakeupSend state of this Node in the cluster</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class FlexrayTopology::FlexrayCommunicationController -->
  <xsd:complexType name="FLEXRAY-COMMUNICATION-CONTROLLER" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>FlexRay bus specific communication port attributes.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:COMMUNICATION-CONTROLLER" />
      <xsd:group ref="AR:FLEXRAY-COMMUNICATION-CONTROLLER" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class FlexrayCommunication::FlexrayFrameTriggering -->
  <xsd:group name="FLEXRAY-FRAME-TRIGGERING">
    <xsd:annotation>
      <xsd:documentation>FlexRay specific attributes to the FrameTriggering</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ABSOLUTELY-SCHEDULED-TIMINGS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="ABSOLUTELY-SCHEDULED-TIMING" type="AR:ABSOLUTELY-SCHEDULED-TIMING" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PAYLOAD-PREAMBLE-INDICATOR" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Switching the Payload Preamble bit.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class FlexrayCommunication::FlexrayFrameTriggering -->
  <xsd:complexType name="FLEXRAY-FRAME-TRIGGERING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>FlexRay specific attributes to the FrameTriggering</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:FRAME-TRIGGERING" />
      <xsd:group ref="AR:FLEXRAY-FRAME-TRIGGERING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class FlexrayTopology::FlexrayPhysicalChannel -->
  <xsd:group name="FLEXRAY-PHYSICAL-CHANNEL">
    <xsd:annotation>
      <xsd:documentation>FlexRay specific attributes to the physicalChannel</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CHANNEL-NAME" type="AR:FLEXRAY-CHANNEL-NAME" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Name of the channel (Channel A or Channel B).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class FlexrayTopology::FlexrayPhysicalChannel -->
  <xsd:complexType name="FLEXRAY-PHYSICAL-CHANNEL" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>FlexRay specific attributes to the physicalChannel</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PHYSICAL-CHANNEL" />
      <xsd:group ref="AR:FLEXRAY-PHYSICAL-CHANNEL" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUCParameterDefTemplate::FloatParamDef -->
  <xsd:group name="FLOAT-PARAM-DEF">
    <xsd:annotation>
      <xsd:documentation>Configuration parameter type for Float.</xsd:documentation>
      <xsd:appinfo source="tags">xml.sequenceOffset="0"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DEFAULT-VALUE" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Default value of the float configuration parameter.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MAX" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>max value allowed for the parameter defined.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MIN" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>min value allowed for the parameter defined.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUCParameterDefTemplate::FloatParamDef -->
  <xsd:complexType name="FLOAT-PARAM-DEF" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Configuration parameter type for Float.</xsd:documentation>
      <xsd:appinfo source="tags">xml.sequenceOffset="0"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PARAM-CONF-MULTIPLICITY" />
      <xsd:group ref="AR:COMMON-CONFIGURATION-ATTRIBUTES" />
      <xsd:group ref="AR:CONFIG-PARAMETER" />
      <xsd:group ref="AR:FLOAT-PARAM-DEF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUCDescriptionTemplate::FloatValue -->
  <xsd:group name="FLOAT-VALUE">
    <xsd:annotation>
      <xsd:documentation>Representing a configuration value of definition type FloatParamDef</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="VALUE" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Stores the value of the Float parameter.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUCDescriptionTemplate::FloatValue -->
  <xsd:complexType name="FLOAT-VALUE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Representing a configuration value of definition type FloatParamDef</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:PARAMETER-VALUE" />
      <xsd:group ref="AR:FLOAT-VALUE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class SignalPaths::ForbiddenSignalPath -->
  <xsd:group name="FORBIDDEN-SIGNAL-PATH">
    <xsd:annotation>
      <xsd:documentation>The ForbiddenSignalPath describes the physical channels which an element must not take in the topology. Such a signal path can be a constraint for the communication matrix,  because such a path has an effect on the frame generation and the frame path.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="OPERATIONS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SWC-TO-SWC-OPERATION-ARGUMENTS" type="AR:SWC-TO-SWC-OPERATION-ARGUMENTS" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PHYSICAL-CHANNEL-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="PHYSICAL-CHANNEL-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:PHYSICAL-CHANNEL--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SIGNALS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SWC-TO-SWC-SIGNAL" type="AR:SWC-TO-SWC-SIGNAL" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SignalPaths::ForbiddenSignalPath -->
  <xsd:complexType name="FORBIDDEN-SIGNAL-PATH" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The ForbiddenSignalPath describes the physical channels which an element must not take in the topology. Such a signal path can be a constraint for the communication matrix,  because such a path has an effect on the frame generation and the frame path.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:FORBIDDEN-SIGNAL-PATH" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ECUCParameterDefTemplate::ForeignReferenceParamDef -->
  <xsd:group name="FOREIGN-REFERENCE-PARAM-DEF">
    <xsd:annotation>
      <xsd:documentation>Specify a reference to an XML description of an entity desribed in another AUTOSAR template.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DESTINATION-TYPE" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The type in the AUTOSAR Metamodel to which' instance this reference is allowed to point to.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUCParameterDefTemplate::ForeignReferenceParamDef -->
  <xsd:complexType name="FOREIGN-REFERENCE-PARAM-DEF" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specify a reference to an XML description of an entity desribed in another AUTOSAR template.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PARAM-CONF-MULTIPLICITY" />
      <xsd:group ref="AR:COMMON-CONFIGURATION-ATTRIBUTES" />
      <xsd:group ref="AR:FOREIGN-REFERENCE-PARAM-DEF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class CoreCommunication::Frame -->
  <xsd:group name="FRAME">
    <xsd:annotation>
      <xsd:documentation>Data frame which is sent over a communication medium. This element describes the pure Layout of a frame sent on a channel.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="FRAME-LENGTH" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The used length (in bytes)  of the referencing frame. Should not be confused with a static byte length reserved for each frame by some platforms (e.g. FlexRay).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PDU-TO-FRAME-MAPPINGS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="PDU-TO-FRAME-MAPPING" type="AR:PDU-TO-FRAME-MAPPING" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class CoreCommunication::Frame -->
  <xsd:complexType name="FRAME" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Data frame which is sent over a communication medium. This element describes the pure Layout of a frame sent on a channel.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:FRAME" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="FRAME--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="FRAME" />
      <xsd:enumeration value="SUBSTITUTION-FRAME" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class Fibex4Multiplatform::FrameMapping -->
  <xsd:group name="FRAME-MAPPING">
    <xsd:annotation>
      <xsd:documentation>The entire source frame is mapped as it is onto the target frame (what in general is only possible inside of a common platform). In this case source and target frame should be the identical object.

Each pair consists in a SOURCE and a TARGET referencing to a FrameTriggering.

The Frame Mapping is not supported by the Autosar BSW. The existence is optional and has been incorporated into the System Template mainly for compatibility in order to allow interchange between FIBEX and AUTOSAR descriptions.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SOURCE-FRAME-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:FRAME-TRIGGERING--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="TARGET-FRAME-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:FRAME-TRIGGERING--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Fibex4Multiplatform::FrameMapping -->
  <xsd:complexType name="FRAME-MAPPING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The entire source frame is mapped as it is onto the target frame (what in general is only possible inside of a common platform). In this case source and target frame should be the identical object.

Each pair consists in a SOURCE and a TARGET referencing to a FrameTriggering.

The Frame Mapping is not supported by the Autosar BSW. The existence is optional and has been incorporated into the System Template mainly for compatibility in order to allow interchange between FIBEX and AUTOSAR descriptions.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:FRAME-MAPPING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class CoreCommunication::FramePort -->
  <xsd:group name="FRAME-PORT">
    <xsd:annotation>
      <xsd:documentation>Connectors reception or send port on the referenced channel referenced by a FrameTriggering.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class CoreCommunication::FramePort -->
  <xsd:complexType name="FRAME-PORT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Connectors reception or send port on the referenced channel referenced by a FrameTriggering.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:COMM-CONNECTOR-PORT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="FRAME-PORT--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="FRAME-PORT" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class CoreCommunication::FrameTriggering -->
  <xsd:group name="FRAME-TRIGGERING">
    <xsd:annotation>
      <xsd:documentation>The FrameTriggering describes the instance of a frame sent on a channel and defines the manner of triggering (timing information) and identification of a frame on the channel, on which it is sent.

For the same frame, if Frame Triggerings exist on more than one channel of the same cluster the fan-out/in is handled by the Bus interface.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="FRAME-PORT-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="FRAME-PORT-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:FRAME-PORT--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="FRAME-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:FRAME--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:simpleType name="FRAME-TRIGGERING--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="CAN-FRAME-TRIGGERING" />
      <xsd:enumeration value="FLEXRAY-FRAME-TRIGGERING" />
      <xsd:enumeration value="FRAME-TRIGGERING" />
      <xsd:enumeration value="LIN-FRAME-TRIGGERING" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class LinCommunication::FreeFormat -->
  <xsd:group name="FREE-FORMAT">
    <xsd:annotation>
      <xsd:documentation>Representing freely defined data.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="BYTE-VALUES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="BYTE-VALUE" type="xsd:integer" minOccurs="0" maxOccurs="unbounded">
              <xsd:annotation>
                <xsd:documentation>The integer Value of a freely defined data byte.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class LinCommunication::FreeFormat -->
  <xsd:complexType name="FREE-FORMAT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Representing freely defined data.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:FREE-FORMAT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class BasicElements::FrequencyRange -->
  <xsd:group name="FREQUENCY-RANGE">
    <xsd:annotation>
      <xsd:documentation>Class describing minimum, maximum and typical frequencies.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="MAX-FREQUENCY" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Maximum frequency.
Unit: Herz</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MIN-FREQUENCY" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Minimum frequency.
Unit: Herz</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="TYPICAL-FREQUENCY" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Typical frequency.
Unit: Herz</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class BasicElements::FrequencyRange -->
  <xsd:complexType name="FREQUENCY-RANGE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Class describing minimum, maximum and typical frequencies.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:FREQUENCY-RANGE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Inlines::Ft -->
  <xsd:group name="FT">
    <xsd:annotation>
      <xsd:documentation>Use &lt;ft&gt; , to create a footnote.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__FT_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Inlines::Ft -->
  <xsd:complexType name="FT" abstract="false" mixed="true">
    <xsd:annotation>
      <xsd:documentation>Use &lt;ft&gt; , to create a footnote.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__FT_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice minOccurs="0" maxOccurs="unbounded" />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ServiceNeeds::FunctionInhibitionNeeds -->
  <xsd:group name="FUNCTION-INHIBITION-NEEDS">
    <xsd:annotation>
      <xsd:documentation>Specifies the abstract needs on the configuration of the Function Inhibition Manager for one Function Identifier (FID). This class currently contains no attributes. Its name can be regarded as a symbol identifying the FID  from the viewpoint of the component or module which owns this class.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ServiceNeeds::FunctionInhibitionNeeds -->
  <xsd:complexType name="FUNCTION-INHIBITION-NEEDS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specifies the abstract needs on the configuration of the Function Inhibition Manager for one Function Identifier (FID). This class currently contains no attributes. Its name can be regarded as a symbol identifying the FID  from the viewpoint of the component or module which owns this class.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUCParameterDefTemplate::FunctionNameDef -->
  <xsd:group name="FUNCTION-NAME-DEF">
    <xsd:annotation>
      <xsd:documentation>Configuration parameter type for Function Names like those used to specify callback functions.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ECUCParameterDefTemplate::FunctionNameDef -->
  <xsd:complexType name="FUNCTION-NAME-DEF" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Configuration parameter type for Function Names like those used to specify callback functions.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PARAM-CONF-MULTIPLICITY" />
      <xsd:group ref="AR:COMMON-CONFIGURATION-ATTRIBUTES" />
      <xsd:group ref="AR:CONFIG-PARAMETER" />
      <xsd:group ref="AR:STRING-PARAM-DEF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUCDescriptionTemplate::FunctionNameValue -->
  <xsd:group name="FUNCTION-NAME-VALUE">
    <xsd:annotation>
      <xsd:documentation>Representing a configuration value of definition type FunctionNameDef</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ECUCDescriptionTemplate::FunctionNameValue -->
  <xsd:complexType name="FUNCTION-NAME-VALUE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Representing a configuration value of definition type FunctionNameDef</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:PARAMETER-VALUE" />
      <xsd:group ref="AR:STRING-VALUE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Fibex4Multiplatform::Gateway -->
  <xsd:group name="GATEWAY">
    <xsd:annotation>
      <xsd:documentation>A gateway is an ECU that is connected to two or more clusters (channels, but not redundant), and performs a frame, Pdu or signal mapping between them.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ECU-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:ECU-INSTANCE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="FRAME-MAPPINGS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="FRAME-MAPPING" type="AR:FRAME-MAPPING" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="I-PDU-MAPPINGS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="I-PDU-MAPPING" type="AR:I-PDU-MAPPING" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SIGNAL-MAPPINGS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SIGNAL-MAPPING" type="AR:SIGNAL-MAPPING" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Fibex4Multiplatform::Gateway -->
  <xsd:complexType name="GATEWAY" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A gateway is an ECU that is connected to two or more clusters (channels, but not redundant), and performs a frame, Pdu or signal mapping between them.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:GATEWAY" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Annotation::GeneralAnnotation -->
  <xsd:group name="GENERAL-ANNOTATION">
    <xsd:annotation>
      <xsd:documentation>This class represents textual comments (called annotations) which relate to the object in which it is aggregated. These are intended for use during the development process, to transfer information from one stage of the development process to the next one. 

The approach is similar to the "yellow pads ..."

This abstract class can be specialized in order to add some further formal properties.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="LABEL" type="AR:ML-DATA-4" minOccurs="0" maxOccurs="1" />
      <xsd:element name="ANNOTATION-ORIGIN" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This element identifies the origin of the annotation. It is an arbitrary string since it can be an individual's name as well as the name of a tool or even the name of a process step.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="ANNOTATION_TYPE__ANNOTATION-ORIGIN";msr.tbdString="true";xml.sequenceOffset="30"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="ANNOTATION-TEXT" type="AR:REMARK" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class Peripherals::GeneralPurposeTimer -->
  <xsd:group name="GENERAL-PURPOSE-TIMER">
    <xsd:annotation>
      <xsd:documentation>Common attributes shared by all timer peripherals</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CLOCK-SOURCE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:OSCILLATOR--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PHASE-DETECTION" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Some timers have the possibility to detect signals from a quadrature rotating switch. There are two outputs signal from such a switch; the signals are 90 degrees phase shifted from each other. The rotation of the switch can then automatically be detected by a special function in a timer.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="RESOLUTION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>For a timer the resolution defines the data width of the counter.
Unit: Bits</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="THRESHOLD-VALUES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="THRESHOLD-VALUE" type="xsd:integer" minOccurs="0" maxOccurs="unbounded">
              <xsd:annotation>
                <xsd:documentation>The threshold is the definition of a counter value. When the counter has reached this value some action is performed, e.g. an interrupt can be generated.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class ECUResourceTemplate::HWConnection -->
  <xsd:group name="HW-CONNECTION">
    <xsd:annotation>
      <xsd:documentation>Abstract class to specify the ability to connect HWPorts.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CONNECTED-PINS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="PIN-HW-CONNECTION" type="AR:PIN-HW-CONNECTION" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class ECUResourceTemplate::HWContainer -->
  <xsd:group name="HW-CONTAINER">
    <xsd:annotation>
      <xsd:documentation>A HW Container is a group of HW Elements on the same hierarchical level and is an abstraction of composite HW Elements. The HW Container is a specialisation of a HW Element and therefore the HW Container has all elements of a HW Element.
The values of elements of the HW Elements grouped in a HW Container may differ from the values of the elements of the HW Container.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ECUResourceTemplate::HWContainer -->
  <xsd:complexType name="HW-CONTAINER" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A HW Container is a group of HW Elements on the same hierarchical level and is an abstraction of composite HW Elements. The HW Container is a specialisation of a HW Element and therefore the HW Container has all elements of a HW Element.
The values of elements of the HW Elements grouped in a HW Container may differ from the values of the elements of the HW Container.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-ELEMENT" />
      <xsd:group ref="AR:HW-ELEMENT-CONTAINER" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUResourceTemplate::HWElement -->
  <xsd:group name="HW-ELEMENT">
    <xsd:annotation>
      <xsd:documentation>The General HW Element specifies definitions valid for all specific HW Elements.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="HW-ELEMENT-TEMPERATURE" type="AR:TEMPERATURE" minOccurs="0" maxOccurs="1" />
      <xsd:element name="PORTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="COMMUNICATION-HW-PORT" type="AR:COMMUNICATION-HW-PORT" />
            <xsd:element name="ECU-COMMUNICATION-PORT" type="AR:ECU-COMMUNICATION-PORT" />
            <xsd:element name="HW-PORT" type="AR:HW-PORT" />
            <xsd:element name="INTERRUPT-CONSUME-HW-PORT" type="AR:INTERRUPT-CONSUME-HW-PORT" />
            <xsd:element name="INTERRUPT-PRODUCE-HW-PORT" type="AR:INTERRUPT-PRODUCE-HW-PORT" />
            <xsd:element name="MEMORY-MAPPED-HW-PORT" type="AR:MEMORY-MAPPED-HW-PORT" />
            <xsd:element name="PERIPHERAL-HW-PORT" type="AR:PERIPHERAL-HW-PORT" />
            <xsd:element name="POWER-DRIVER-HW-PORT" type="AR:POWER-DRIVER-HW-PORT" />
            <xsd:element name="POWER-SUPPLY-HW-PORT" type="AR:POWER-SUPPLY-HW-PORT" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SIGNAL-TRANSFORMATIONS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SIGNAL-TRANSFORMATION" type="AR:SIGNAL-TRANSFORMATION" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="STANDBY-CURRENT" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The Standby Current is the current in state OFF. For HW Elements the Standby Current consists of the current needed by the logic to stay in the state OFF and the leakage current of the HW Element. For big HW Elements the leakage current can be up to several 100 microA.
Standby Current is used to determine which elements are necessary to be switch off, when the car itself is in a standby mode. This can be done automatically or by the user.
The value for the Standby Current can be entered for each HW Element and HW Container respectively. The user has to take care about these values and decides about the entries necessary for the calculation of the complete standby current. On the other side the sum for all HW Elements grouped in a HW Container may have a bigger value than the value for the HW Container itself. In this case the values for the HW Elements represent the worst case for each HW Element. 
Unit: Ampere (A)</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SUPPORTS-SAFETY" type="AR:SUPPORTS-SAFETY" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SUPPORTS-SECURITY" type="AR:SUPPORTS-SECURITY" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <xsd:simpleType name="HW-ELEMENT--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="ADC" />
      <xsd:enumeration value="ACTUATOR-HW" />
      <xsd:enumeration value="ANALOGUE-IO" />
      <xsd:enumeration value="CCU" />
      <xsd:enumeration value="CLOCK" />
      <xsd:enumeration value="COMMUNICATION-PERIPHERAL" />
      <xsd:enumeration value="COMMUNICATION-TRANSCEIVER" />
      <xsd:enumeration value="DAC" />
      <xsd:enumeration value="DIGITAL-IO" />
      <xsd:enumeration value="DISCRETE-ECU-ELECTRONICS" />
      <xsd:enumeration value="DISPLAY-HW" />
      <xsd:enumeration value="ECU" />
      <xsd:enumeration value="ECU-ELECTRONICS" />
      <xsd:enumeration value="GENERAL-PURPOSE-TIMER" />
      <xsd:enumeration value="HW-CONTAINER" />
      <xsd:enumeration value="HW-ELEMENT" />
      <xsd:enumeration value="HW-ELEMENT-CONTAINER" />
      <xsd:enumeration value="OSCILLATOR" />
      <xsd:enumeration value="PWD" />
      <xsd:enumeration value="PWM" />
      <xsd:enumeration value="PERIPHERAL" />
      <xsd:enumeration value="POWER-DRIVER-HW-ELEMENT" />
      <xsd:enumeration value="POWER-SUPPLY-HW-ELEMENT" />
      <xsd:enumeration value="PROCESSING-UNIT" />
      <xsd:enumeration value="PROVIDED-MEMORY-SEGMENT" />
      <xsd:enumeration value="PROVIDED-NV-MEMORY-SEGMENT" />
      <xsd:enumeration value="PULSE-WIDTH-PERIPHERAL" />
      <xsd:enumeration value="SENSOR-ACTUATOR-HW" />
      <xsd:enumeration value="SENSOR-HW" />
      <xsd:enumeration value="TIMER" />
      <xsd:enumeration value="WATCH-DOG" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class ECUResourceTemplate::HWElementContainer -->
  <xsd:group name="HW-ELEMENT-CONTAINER">
    <xsd:annotation>
      <xsd:documentation>Abstract class to enable the collection of HW Elements.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CONNECTIONS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="ASSEMBLY-HW-CONNECTION" type="AR:ASSEMBLY-HW-CONNECTION" />
            <xsd:element name="DELEGATION-HW-CONNECTION" type="AR:DELEGATION-HW-CONNECTION" />
            <xsd:element name="MEMORY-MAPPED-ASSEMBLY-HW-CONNECTION" type="AR:MEMORY-MAPPED-ASSEMBLY-HW-CONNECTION" />
            <xsd:element name="MEMORY-MAPPED-DELEGATION-HW-CONNECTION" type="AR:MEMORY-MAPPED-DELEGATION-HW-CONNECTION" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="CONTAINED-ELEMENTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="ADC" type="AR:ADC" />
            <xsd:element name="ACTUATOR-HW" type="AR:ACTUATOR-HW" />
            <xsd:element name="CCU" type="AR:CCU" />
            <xsd:element name="CLOCK" type="AR:CLOCK" />
            <xsd:element name="COMMUNICATION-PERIPHERAL" type="AR:COMMUNICATION-PERIPHERAL" />
            <xsd:element name="COMMUNICATION-TRANSCEIVER" type="AR:COMMUNICATION-TRANSCEIVER" />
            <xsd:element name="DAC" type="AR:DAC" />
            <xsd:element name="DIGITAL-IO" type="AR:DIGITAL-IO" />
            <xsd:element name="DISCRETE-ECU-ELECTRONICS" type="AR:DISCRETE-ECU-ELECTRONICS" />
            <xsd:element name="DISPLAY-HW" type="AR:DISPLAY-HW" />
            <xsd:element name="ECU" type="AR:ECU" />
            <xsd:element name="HW-CONTAINER" type="AR:HW-CONTAINER" />
            <xsd:element name="OSCILLATOR" type="AR:OSCILLATOR" />
            <xsd:element name="PWD" type="AR:PWD" />
            <xsd:element name="PWM" type="AR:PWM" />
            <xsd:element name="PERIPHERAL" type="AR:PERIPHERAL" />
            <xsd:element name="POWER-DRIVER-HW-ELEMENT" type="AR:POWER-DRIVER-HW-ELEMENT" />
            <xsd:element name="POWER-SUPPLY-HW-ELEMENT" type="AR:POWER-SUPPLY-HW-ELEMENT" />
            <xsd:element name="PROCESSING-UNIT" type="AR:PROCESSING-UNIT" />
            <xsd:element name="PROVIDED-MEMORY-SEGMENT" type="AR:PROVIDED-MEMORY-SEGMENT" />
            <xsd:element name="PROVIDED-NV-MEMORY-SEGMENT" type="AR:PROVIDED-NV-MEMORY-SEGMENT" />
            <xsd:element name="SENSOR-HW" type="AR:SENSOR-HW" />
            <xsd:element name="TIMER" type="AR:TIMER" />
            <xsd:element name="WATCH-DOG" type="AR:WATCH-DOG" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class ECUResourceTemplate::HWPin -->
  <xsd:group name="HW-PIN">
    <xsd:annotation>
      <xsd:documentation>A HWPin is an elementary electrical interface of the HWElement.
The HWPins of a HWPort can be clustered if there are some HWPins with the same behaviour.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ECUResourceTemplate::HWPin -->
  <xsd:complexType name="HW-PIN" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A HWPin is an elementary electrical interface of the HWElement.
The HWPins of a HWPort can be clustered if there are some HWPins with the same behaviour.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="HW-PIN--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="HW-PIN" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class ECUResourceTemplate::HWPort -->
  <xsd:group name="HW-PORT">
    <xsd:annotation>
      <xsd:documentation>The general element HW Port is necessary to connect HW Elements and contains common elements for all different kind of HW Ports.
HW Ports are required to be uniquely identifiable within the scope of a HW Element. This means to identify a specific HW Port it is necessary to prefix the HW Port name by the name of the HW Element (e.g."PU1/ADCPort3").</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DIRECTION" type="AR:COMMUNICATION-DIRECTION-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The direction of a HW Port defines signal flow in the point of view of the HW Element the HW Port belongs to. The following attributes are allowed:</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PINS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="HW-PIN" type="AR:HW-PIN" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUResourceTemplate::HWPort -->
  <xsd:complexType name="HW-PORT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The general element HW Port is necessary to connect HW Elements and contains common elements for all different kind of HW Ports.
HW Ports are required to be uniquely identifiable within the scope of a HW Element. This means to identify a specific HW Port it is necessary to prefix the HW Port name by the name of the HW Element (e.g."PU1/ADCPort3").</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-PORT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="HW-PORT--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="COMMUNICATION-HW-PORT" />
      <xsd:enumeration value="ECU-COMMUNICATION-PORT" />
      <xsd:enumeration value="HW-PORT" />
      <xsd:enumeration value="INTERRUPT-CONSUME-HW-PORT" />
      <xsd:enumeration value="INTERRUPT-HW-PORT" />
      <xsd:enumeration value="INTERRUPT-PRODUCE-HW-PORT" />
      <xsd:enumeration value="MEMORY-MAPPED-HW-PORT" />
      <xsd:enumeration value="PERIPHERAL-HW-PORT" />
      <xsd:enumeration value="POWER-DRIVER-HW-PORT" />
      <xsd:enumeration value="POWER-SUPPLY-HW-PORT" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class ECUResourceMapping::HWPortMapping -->
  <xsd:group name="HW-PORT-MAPPING">
    <xsd:annotation>
      <xsd:documentation>HWPortMapping specifies the ECUCommunicationPort hardware (defined in the ECU Resource Template) to realize the specified CommunicationConnector in a physical topology.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="COMMUNICATION-CONNECTOR-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMMUNICATION-CONNECTOR--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="ECU-COMMUNICATION-PORT-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:ECU-COMMUNICATION-PORT--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUResourceMapping::HWPortMapping -->
  <xsd:complexType name="HW-PORT-MAPPING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>HWPortMapping specifies the ECUCommunicationPort hardware (defined in the ECU Resource Template) to realize the specified CommunicationConnector in a physical topology.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:HW-PORT-MAPPING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ResourceConsumption::HardwareConfiguration -->
  <xsd:group name="HARDWARE-CONFIGURATION">
    <xsd:annotation>
      <xsd:documentation>Describes in which mode the hardware is operating while providing the ExecutionTime.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ADDITIONAL-INFORMATION" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Specifies additional information on the HardwareConfiguration.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PROCESSOR-MODE" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Specifies in which mode the processor is operating.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PROCESSOR-SPEED" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Specifies the speed the processor is operating.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ResourceConsumption::HardwareConfiguration -->
  <xsd:complexType name="HARDWARE-CONFIGURATION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Describes in which mode the hardware is operating while providing the ExecutionTime.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:HARDWARE-CONFIGURATION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class HeapUsage::HeapUsage -->
  <xsd:group name="HEAP-USAGE">
    <xsd:annotation>
      <xsd:documentation>Describes the heap memory usage of a SW-Component.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ECU-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:ECU--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="HARDWARE-CONFIGURATION" type="AR:HARDWARE-CONFIGURATION" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SOFTWARE-CONTEXT" type="AR:SOFTWARE-CONTEXT" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class CoreCommunication::IPdu -->
  <xsd:group name="I-PDU">
    <xsd:annotation>
      <xsd:documentation>The IPdu (Interaction Layer Protocol Data Unit) element is used to sum up the IPdus of AUTOSAR COM, DCM and IPduM. This Pdus are sent to the PduR.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="LENGTH" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The size of the IPDU in bits.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="UNUSED-BIT-PATTERN" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>AUTOSAR COM fills not used areas of an IPDU with this bit-pattern. This attribute is mandatory to avoid undefined behavior. This byte-pattern will be repeated throughout the IPDU.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:simpleType name="I-PDU--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="DCM-I-PDU" />
      <xsd:enumeration value="I-PDU" />
      <xsd:enumeration value="MULTIPLEXED-I-PDU" />
      <xsd:enumeration value="SIGNAL-I-PDU" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class CoreCommunication::IPduGroup -->
  <xsd:group name="I-PDU-GROUP">
    <xsd:annotation>
      <xsd:documentation>The AUTOSAR COM Layer is able to start and to stop sending and receiving  configurable groups of I-Pdus during runtime. An I-Pdu group contains either Com I-Pdus or I-Pdu groups.

When an I-Pdu group containing one or more other I-Pdu groups is started the contained I-Pdu groups shall also be started. When an I-Pdu group containing one or more other I-Pdu groups is stopped the contained I-Pdu groups shall also be stopped.

Only a two level hierarchy of I-Pdu groups is allowed. An I-Pdu group that is part of an I-Pdu group must not contain I-Pdu groups.

In the COM SRS document it is stated that "every IPdu must belong to exactly 1 I-Pdu group."
This is true from a dedicated ECUs point of view, however in the system description handling a number of ECUs several IPdu Groups may reference to the same SignalIPdu.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="COMMUNICATION-DIRECTION" type="AR:COMMUNICATION-DIRECTION-TYPE" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This attribute determines in which direction IPdus that are contained in this IPduGroup will be transmitted (communication direction can be either Send or Receive).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="COMMUNICATION-MODE" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This attribute defines the use-case for this IPduGroup (e.g. diagnostic, debugging etc.). For example, in a diagnostic mode all IPdus - which are not involved in diagnostic - are disabled. The use cases are not limited to a fixed enumeration and can be specified as a string.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="CONTAINED-I-PDU-GROUPS-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="CONTAINED-I-PDU-GROUPS-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:I-PDU-GROUP--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="I-PDU-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="I-PDU-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:SIGNAL-I-PDU--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class CoreCommunication::IPduGroup -->
  <xsd:complexType name="I-PDU-GROUP" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The AUTOSAR COM Layer is able to start and to stop sending and receiving  configurable groups of I-Pdus during runtime. An I-Pdu group contains either Com I-Pdus or I-Pdu groups.

When an I-Pdu group containing one or more other I-Pdu groups is started the contained I-Pdu groups shall also be started. When an I-Pdu group containing one or more other I-Pdu groups is stopped the contained I-Pdu groups shall also be stopped.

Only a two level hierarchy of I-Pdu groups is allowed. An I-Pdu group that is part of an I-Pdu group must not contain I-Pdu groups.

In the COM SRS document it is stated that "every IPdu must belong to exactly 1 I-Pdu group."
This is true from a dedicated ECUs point of view, however in the system description handling a number of ECUs several IPdu Groups may reference to the same SignalIPdu.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:I-PDU-GROUP" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="I-PDU-GROUP--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="I-PDU-GROUP" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class Fibex4Multiplatform::IPduMapping -->
  <xsd:group name="I-PDU-MAPPING">
    <xsd:annotation>
      <xsd:documentation>Arranges those IPdus that are transferred by the gateway from one channel to the other in pairs and defines the mapping between them.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SOURCE-I-PDU" type="AR:SOURCE-I-PDU-REF" minOccurs="0" maxOccurs="1" />
      <xsd:element name="TARGET-I-PDU" type="AR:TARGET-I-PDU-REF" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Fibex4Multiplatform::IPduMapping -->
  <xsd:complexType name="I-PDU-MAPPING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Arranges those IPdus that are transferred by the gateway from one channel to the other in pairs and defines the mapping between them.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:I-PDU-MAPPING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class CoreCommunication::IPduPort -->
  <xsd:group name="I-PDU-PORT">
    <xsd:annotation>
      <xsd:documentation>Connectors reception or send port on the referenced channel referenced by an IPduTriggering.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class CoreCommunication::IPduPort -->
  <xsd:complexType name="I-PDU-PORT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Connectors reception or send port on the referenced channel referenced by an IPduTriggering.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:COMM-CONNECTOR-PORT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="I-PDU-PORT--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="I-PDU-PORT" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class CoreCommunication::IPduTiming -->
  <xsd:group name="I-PDU-TIMING">
    <xsd:annotation>
      <xsd:documentation>AUTOSAR COM provides the possibility to define two different TRANSMISSION MODES for each I-PDU.

The Transmission Mode of an I-PDU that is valid at a specific point in time is 
selected using the values of the signals that are mapped to this I-PDU. For each I-PDU a Transmission Mode Selector is defined. The Transmission Mode Selector is calculated by evaluating the conditions for a subset of signals  (class TransmissionModeCondition in the System Template).

The Transmission Mode Selector is defined to be true, if at least one Condition evaluates to true and is defined to be false, if all Conditions evaluate to false.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CYCLIC-TIMING" type="AR:CYCLIC-TIMING" minOccurs="0" maxOccurs="1" />
      <xsd:element name="EVENT-CONTROLLED-TIMING" type="AR:EVENT-CONTROLLED-TIMING" minOccurs="0" maxOccurs="1" />
      <xsd:element name="MINIMUM-DELAY" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Minimum Delay in seconds between successive transmissions of this I-PDU, independent of the Transmission Mode.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="REQUEST-CONTROLLED-TIMING" type="AR:REQUEST-CONTROLLED-TIMING" minOccurs="0" maxOccurs="1" />
      <xsd:element name="TRANSMISSION-MODE-DECLARATION" type="AR:TRANSMISSION-MODE-DECLARATION" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class CoreCommunication::IPduTiming -->
  <xsd:complexType name="I-PDU-TIMING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>AUTOSAR COM provides the possibility to define two different TRANSMISSION MODES for each I-PDU.

The Transmission Mode of an I-PDU that is valid at a specific point in time is 
selected using the values of the signals that are mapped to this I-PDU. For each I-PDU a Transmission Mode Selector is defined. The Transmission Mode Selector is calculated by evaluating the conditions for a subset of signals  (class TransmissionModeCondition in the System Template).

The Transmission Mode Selector is defined to be true, if at least one Condition evaluates to true and is defined to be false, if all Conditions evaluate to false.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:I-PDU-TIMING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class CoreCommunication::IPduTriggering -->
  <xsd:group name="I-PDU-TRIGGERING">
    <xsd:annotation>
      <xsd:documentation>The IPduTriggering describes on which channel the IPdu is transmitted.

Depending on its relation to entities such channels and clusters it can be unambiguously deduced whether a fan-out is handled by the Pdu router or the Bus Interface. 

If the fan-out is specified between different clusters it shall be handled by the Pdu Router.
If the fan-out is specified between different channels of the same cluster it shall be handled by the Bus Interface.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="I-PDU-PORT-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="I-PDU-PORT-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:I-PDU-PORT--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="I-PDU-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:I-PDU--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="TIMING-REQUIREMENT" type="AR:I-PDU-TIMING" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class CoreCommunication::IPduTriggering -->
  <xsd:complexType name="I-PDU-TRIGGERING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The IPduTriggering describes on which channel the IPdu is transmitted.

Depending on its relation to entities such channels and clusters it can be unambiguously deduced whether a fan-out is handled by the Pdu router or the Bus Interface. 

If the fan-out is specified between different clusters it shall be handled by the Pdu Router.
If the fan-out is specified between different channels of the same cluster it shall be handled by the Bus Interface.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:I-PDU-TRIGGERING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="I-PDU-TRIGGERING--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="I-PDU-TRIGGERING" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class CoreCommunication::ISignal -->
  <xsd:group name="I-SIGNAL">
    <xsd:annotation>
      <xsd:documentation>Signal of the Interaction Layer. The RTE supports a "signal fan-out" where the same System Signal is sent in different SignalIPdus to multiple receivers. 

The System Signal is unique per System. To support the RTE "signal fan-out" each SignalIPdu  contains ISignals. If the same System Signal is to be mapped into several SignalIPdus there is one ISignal needed for each ISignalToIPduMapping. 

ISignals describe the Interface between the Precompile configured RTE and the potentially Postbuild configured Com Stack (see ECUC Parameter Mapping). 

In the case of the SystemSignalGroup an ISignal must be created for the SystemSignalGroup and for each SystemSignal contained in the SystemSignalGroup.
If a mapping for the SystemSignalGroup is defined, only the UpdateIndicationBitPosition is relevant, and the startPosition shall be ignored.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SYSTEM-SIGNAL-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:ABSTRACT-SIGNAL--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class CoreCommunication::ISignal -->
  <xsd:complexType name="I-SIGNAL" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Signal of the Interaction Layer. The RTE supports a "signal fan-out" where the same System Signal is sent in different SignalIPdus to multiple receivers. 

The System Signal is unique per System. To support the RTE "signal fan-out" each SignalIPdu  contains ISignals. If the same System Signal is to be mapped into several SignalIPdus there is one ISignal needed for each ISignalToIPduMapping. 

ISignals describe the Interface between the Precompile configured RTE and the potentially Postbuild configured Com Stack (see ECUC Parameter Mapping). 

In the case of the SystemSignalGroup an ISignal must be created for the SystemSignalGroup and for each SystemSignal contained in the SystemSignalGroup.
If a mapping for the SystemSignalGroup is defined, only the UpdateIndicationBitPosition is relevant, and the startPosition shall be ignored.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:I-SIGNAL" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="I-SIGNAL--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="I-SIGNAL" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class CoreCommunication::ISignalToIPduMapping -->
  <xsd:group name="I-SIGNAL-TO-I-PDU-MAPPING">
    <xsd:annotation>
      <xsd:documentation>An ISignalToIPduMapping describes the mapping of ISignals to SignalIPdus and defines the position of the ISignal within an SignalIPdu.

This element does NOT describe signal or I-PDU fan-out. 
Every ISignal can only be mapped into one SignalIPdu.
Several ISignalToIPduMappings to the same ISignal are only relevant when the ECU handles the signal gateway. 

If a mapping for the SystemSignalGroup is defined, only the UpdateIndicationBitPosition is relevant, and the startPosition shall be ignored.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="PACKING-BYTE-ORDER" type="AR:BYTE-ORDER-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This parameter defines the order of the bytes of the signal and the packing into the SignalIPdu. The byte ordering "Little Endian" (MostSignificantByteLast) and "Big Endian" (MostSignificantByteFirst) can be selected. 
The value of this attribute impacts the absolute position of the signal into the SignalIPdu (see the startPosition attribute description).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SIGNAL-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:I-SIGNAL--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="START-POSITION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This parameter is necessary to describe the bitposition of a signal within an SignalIPdu.
It denotes the least significant bit for "Little Endian" and the most significant bit for "Big Endian" packed signals within the IPdu (see the description of the packingByteOrder attribute).

Bits within the IPdu are counted as follows (see the OSEK COM v3.0.3 specification) :
      Bit 0 corresponds to Byte 0 Bit 0
      Bit 1 corresponds to Byte 0 Bit 1
      .....
      Bit 8 corresponds to Byte 1 Bit 0
      etc.

Please note that the way the bytes will be actually sent on the bus does not impact this representation: they will always be seen by the software as a byte array. 
Note also that the absolute position of the signal in the SignalIPdu is then determined by the definition of the packingByteOrder attribute of the signal.

If a mapping for the SystemSignalGroup is defined, only the UpdateIndicationBitPosition is relevant, and the startPosition shall be ignored.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="UPDATE-INDICATION-BIT-POSITION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The UpdateIndicationBit indicates to the receivers that the signal (or the signal group) was updated by the sender. Length is always one bit. The UpdateIndicationBitPosition attribute describes the position of the update bit within the SignalIPdu.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class CoreCommunication::ISignalToIPduMapping -->
  <xsd:complexType name="I-SIGNAL-TO-I-PDU-MAPPING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>An ISignalToIPduMapping describes the mapping of ISignals to SignalIPdus and defines the position of the ISignal within an SignalIPdu.

This element does NOT describe signal or I-PDU fan-out. 
Every ISignal can only be mapped into one SignalIPdu.
Several ISignalToIPduMappings to the same ISignal are only relevant when the ECU handles the signal gateway. 

If a mapping for the SystemSignalGroup is defined, only the UpdateIndicationBitPosition is relevant, and the startPosition shall be ignored.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:I-SIGNAL-TO-I-PDU-MAPPING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="I-SIGNAL-TO-I-PDU-MAPPING--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="I-SIGNAL-TO-I-PDU-MAPPING" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class CoreCommunication::ISignalTriggering -->
  <xsd:group name="I-SIGNAL-TRIGGERING">
    <xsd:annotation>
      <xsd:documentation>A ISignalTriggering defines the manner of triggering of a ISignal on the channel, on which it is sent.

ISignalTriggering should only be used for defining timing constraints. Com does not know of signals related to a specific cluster or channel.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CYCLIC-TIMING" type="AR:CYCLIC-TIMING" minOccurs="0" maxOccurs="1" />
      <xsd:element name="EVENT-CONTROLLED-TIMING" type="AR:EVENT-CONTROLLED-TIMING" minOccurs="0" maxOccurs="1" />
      <xsd:element name="I-SIGNAL-PORT-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="I-SIGNAL-PORT-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:SIGNAL-PORT--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SIGNAL-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:I-SIGNAL--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class CoreCommunication::ISignalTriggering -->
  <xsd:complexType name="I-SIGNAL-TRIGGERING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A ISignalTriggering defines the manner of triggering of a ISignal on the channel, on which it is sent.

ISignalTriggering should only be used for defining timing constraints. Com does not know of signals related to a specific cluster or channel.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:I-SIGNAL-TRIGGERING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Identifiable::Identifiable -->
  <xsd:group name="IDENTIFIABLE">
    <xsd:annotation>
      <xsd:documentation>Instances of this class can be referred to by their identifier (while adhering to namespace borders).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SHORT-NAME" type="AR:IDENTIFIER" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Use &lt;shortName&gt; to generate a short name for the context element, which enables it to be ** .</xsd:documentation>
          <xsd:appinfo source="tags">xml.enforceMinMultiplicity="true";xml.sequenceOffset="-100"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="LONG-NAME" type="AR:ML-DATA-4" minOccurs="0" maxOccurs="1" />
      <xsd:element name="DESC" type="AR:ML-DATA-2" minOccurs="0" maxOccurs="1" />
      <xsd:element name="CATEGORY" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This element assigns a category to the parent element. The category can be used by a semantic checker in post-processes to ensure that the parent object is defined correctly i.e. has the right number of elements for example.</xsd:documentation>
          <xsd:appinfo source="tags">xml.sequenceOffset="-50"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="ADMIN-DATA" type="AR:ADMIN-DATA" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- attribute group for class Identifiable::Identifiable -->
  <xsd:attributeGroup name="IDENTIFIABLE">
    <xsd:annotation>
      <xsd:documentation>Instances of this class can be referred to by their identifier (while adhering to namespace borders).</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="UUID" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>The purpose of this attribute is to provide a globally unique identifier for an instance of a metaclass. The values of this attribute should be globally unique strings prefixed by the type of identifier.  For example, to include a
DCE UUID as defined by The Open Group, the UUID would be preceded by "DCE:". The values of this attribute may be used to support merging of different AUTOSAR models. 
The form of the UUID (Universally Unique Identifier) is taken from a standard defined by the Open Group (was Open Software Foundation). This standard is widely used, including by Microsoft for COM (GUIDs) and by many companies for DCE, which is based on CORBA. The method for generating these 128-bit IDs is published in the standard and the effectiveness and uniqueness of the IDs is not in practice disputed.
If the id namespace is omitted, DCE is assumed. 
An example is "DCE:2fac1234-31f8-11b4-a222-08002b34c003".</xsd:documentation>
        <xsd:appinfo source="tags">xml.attribute="true"</xsd:appinfo>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:attributeGroup>
  <xsd:simpleType name="IDENTIFIABLE--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="IDENTIFIABLE" />
      <xsd:enumeration value="ADC" />
      <xsd:enumeration value="AR-ELEMENT" />
      <xsd:enumeration value="AR-PACKAGE" />
      <xsd:enumeration value="ABSTRACT-SIGNAL" />
      <xsd:enumeration value="ACTUATOR-HW" />
      <xsd:enumeration value="ANALOGUE-IO" />
      <xsd:enumeration value="APPLICATION-ERROR" />
      <xsd:enumeration value="APPLICATION-SOFTWARE-COMPONENT-TYPE" />
      <xsd:enumeration value="ARGUMENT-PROTOTYPE" />
      <xsd:enumeration value="ARRAY-ELEMENT" />
      <xsd:enumeration value="ARRAY-SPECIFICATION" />
      <xsd:enumeration value="ARRAY-TYPE" />
      <xsd:enumeration value="ASSEMBLY-CONNECTOR-PROTOTYPE" />
      <xsd:enumeration value="ASSEMBLY-HW-CONNECTION" />
      <xsd:enumeration value="ASYNCHRONOUS-SERVER-CALL-POINT" />
      <xsd:enumeration value="ASYNCHRONOUS-SERVER-CALL-RETURNS-EVENT" />
      <xsd:enumeration value="ATOMIC-SOFTWARE-COMPONENT-TYPE" />
      <xsd:enumeration value="BASE-TYPE" />
      <xsd:enumeration value="BOOLEAN-LITERAL" />
      <xsd:enumeration value="BOOLEAN-PARAM-DEF" />
      <xsd:enumeration value="BOOLEAN-TYPE" />
      <xsd:enumeration value="BSW-BEHAVIOR" />
      <xsd:enumeration value="BSW-CYCLIC-EVENT" />
      <xsd:enumeration value="BSW-EVENT" />
      <xsd:enumeration value="BSW-IMPLEMENTATION" />
      <xsd:enumeration value="BSW-INTERRUPT-ENTITY" />
      <xsd:enumeration value="BSW-MODULE-DEPENDENCY" />
      <xsd:enumeration value="BSW-MODULE-DESCRIPTION" />
      <xsd:enumeration value="BSW-MODULE-ENTITY" />
      <xsd:enumeration value="BSW-MODULE-ENTRY" />
      <xsd:enumeration value="BSW-SCHEDULABLE-ENTITY" />
      <xsd:enumeration value="BSW-SPORADIC-EVENT" />
      <xsd:enumeration value="CCU" />
      <xsd:enumeration value="CALPRM-ACCESS" />
      <xsd:enumeration value="CALPRM-COMPONENT-TYPE" />
      <xsd:enumeration value="CALPRM-ELEMENT-PROTOTYPE" />
      <xsd:enumeration value="CALPRM-INTERFACE" />
      <xsd:enumeration value="CAN-CLUSTER" />
      <xsd:enumeration value="CAN-COMMUNICATION-CONTROLLER" />
      <xsd:enumeration value="CAN-FRAME-TRIGGERING" />
      <xsd:enumeration value="CHAR-LITERAL" />
      <xsd:enumeration value="CHAR-TYPE" />
      <xsd:enumeration value="CHOICE-CONTAINER-DEF" />
      <xsd:enumeration value="CHOICE-REFERENCE-PARAM-DEF" />
      <xsd:enumeration value="CLIENT-SERVER-INTERFACE" />
      <xsd:enumeration value="CLOCK" />
      <xsd:enumeration value="CODE" />
      <xsd:enumeration value="COM-MGR-USER-NEEDS" />
      <xsd:enumeration value="COMM-CONNECTOR-PORT" />
      <xsd:enumeration value="COMMON-CONFIGURATION-ATTRIBUTES" />
      <xsd:enumeration value="COMMUNICATION-CLUSTER" />
      <xsd:enumeration value="COMMUNICATION-CONNECTOR" />
      <xsd:enumeration value="COMMUNICATION-CONTROLLER" />
      <xsd:enumeration value="COMMUNICATION-HW-PORT" />
      <xsd:enumeration value="COMMUNICATION-PERIPHERAL" />
      <xsd:enumeration value="COMMUNICATION-PROTOCOL" />
      <xsd:enumeration value="COMMUNICATION-TRANSCEIVER" />
      <xsd:enumeration value="COMPILER" />
      <xsd:enumeration value="COMPLEX-DEVICE-DRIVER-COMPONENT-TYPE" />
      <xsd:enumeration value="COMPONENT-PROTOTYPE" />
      <xsd:enumeration value="COMPONENT-TYPE" />
      <xsd:enumeration value="COMPOSITE-TYPE" />
      <xsd:enumeration value="COMPOSITION-TYPE" />
      <xsd:enumeration value="COMPU-METHOD" />
      <xsd:enumeration value="CONFIG-PARAMETER" />
      <xsd:enumeration value="CONFIG-REFERENCE" />
      <xsd:enumeration value="CONNECTOR-PROTOTYPE" />
      <xsd:enumeration value="CONSTANT-REFERENCE" />
      <xsd:enumeration value="CONSTANT-SPECIFICATION" />
      <xsd:enumeration value="CONTAINER" />
      <xsd:enumeration value="CONTAINER-DEF" />
      <xsd:enumeration value="DAC" />
      <xsd:enumeration value="DATA-CONSTR" />
      <xsd:enumeration value="DATA-ELEMENT-PROTOTYPE" />
      <xsd:enumeration value="DATA-PROTOTYPE" />
      <xsd:enumeration value="DATA-READ-ACCESS" />
      <xsd:enumeration value="DATA-RECEIVE-ERROR-EVENT" />
      <xsd:enumeration value="DATA-RECEIVE-POINT" />
      <xsd:enumeration value="DATA-RECEIVED-EVENT" />
      <xsd:enumeration value="DATA-SEND-COMPLETED-EVENT" />
      <xsd:enumeration value="DATA-SEND-POINT" />
      <xsd:enumeration value="DATA-WRITE-ACCESS" />
      <xsd:enumeration value="DATATYPE" />
      <xsd:enumeration value="DCM-I-PDU" />
      <xsd:enumeration value="DELEGATION-CONNECTOR-PROTOTYPE" />
      <xsd:enumeration value="DELEGATION-HW-CONNECTION" />
      <xsd:enumeration value="DEPENDENCY" />
      <xsd:enumeration value="DEPENDENCY-ON-FILE" />
      <xsd:enumeration value="DEPENDENCY-ON-LIBRARY" />
      <xsd:enumeration value="DERIVED-BOOLEAN-PARAM-DEF" />
      <xsd:enumeration value="DERIVED-ENUMERATION-PARAM-DEF" />
      <xsd:enumeration value="DERIVED-FLOAT-PARAM-DEF" />
      <xsd:enumeration value="DERIVED-INTEGER-PARAM-DEF" />
      <xsd:enumeration value="DERIVED-STRING-PARAM-DEF" />
      <xsd:enumeration value="DIAGNOSTIC-COMMUNICATION-NEEDS" />
      <xsd:enumeration value="DIAGNOSTIC-EVENT-NEEDS" />
      <xsd:enumeration value="DIGITAL-IO" />
      <xsd:enumeration value="DISCRETE-ECU-ELECTRONICS" />
      <xsd:enumeration value="DISPLAY-HW" />
      <xsd:enumeration value="ECU" />
      <xsd:enumeration value="ECU-COMMUNICATION-PORT" />
      <xsd:enumeration value="ECU-ELECTRONICS" />
      <xsd:enumeration value="ECU-MAPPING" />
      <xsd:enumeration value="ECU-ABSTRACTION-COMPONENT-TYPE" />
      <xsd:enumeration value="ECU-CONFIGURATION" />
      <xsd:enumeration value="ECU-INSTANCE" />
      <xsd:enumeration value="ECU-PARAMETER-DEFINITION" />
      <xsd:enumeration value="ECU-STATE-MGR-USER-NEEDS" />
      <xsd:enumeration value="ECU-SW-COMPOSITION" />
      <xsd:enumeration value="ENUMERATION-LITERAL-DEF" />
      <xsd:enumeration value="ENUMERATION-PARAM-DEF" />
      <xsd:enumeration value="EXCLUSIVE-AREA" />
      <xsd:enumeration value="EXECUTABLE-ENTITY" />
      <xsd:enumeration value="EXECUTION-TIME" />
      <xsd:enumeration value="FIBEX-ELEMENT" />
      <xsd:enumeration value="FLEX-RAY-COMMUNICATION-CONNECTOR" />
      <xsd:enumeration value="FLEXRAY-CLUSTER" />
      <xsd:enumeration value="FLEXRAY-COMMUNICATION-CONTROLLER" />
      <xsd:enumeration value="FLEXRAY-FRAME-TRIGGERING" />
      <xsd:enumeration value="FLEXRAY-PHYSICAL-CHANNEL" />
      <xsd:enumeration value="FLOAT-PARAM-DEF" />
      <xsd:enumeration value="FOREIGN-REFERENCE-PARAM-DEF" />
      <xsd:enumeration value="FRAME" />
      <xsd:enumeration value="FRAME-PORT" />
      <xsd:enumeration value="FRAME-TRIGGERING" />
      <xsd:enumeration value="FUNCTION-INHIBITION-NEEDS" />
      <xsd:enumeration value="FUNCTION-NAME-DEF" />
      <xsd:enumeration value="GATEWAY" />
      <xsd:enumeration value="GENERAL-PURPOSE-TIMER" />
      <xsd:enumeration value="HW-CONNECTION" />
      <xsd:enumeration value="HW-CONTAINER" />
      <xsd:enumeration value="HW-ELEMENT" />
      <xsd:enumeration value="HW-ELEMENT-CONTAINER" />
      <xsd:enumeration value="HW-PIN" />
      <xsd:enumeration value="HW-PORT" />
      <xsd:enumeration value="HEAP-USAGE" />
      <xsd:enumeration value="I-PDU" />
      <xsd:enumeration value="I-PDU-GROUP" />
      <xsd:enumeration value="I-PDU-PORT" />
      <xsd:enumeration value="I-PDU-TRIGGERING" />
      <xsd:enumeration value="I-SIGNAL" />
      <xsd:enumeration value="I-SIGNAL-TO-I-PDU-MAPPING" />
      <xsd:enumeration value="I-SIGNAL-TRIGGERING" />
      <xsd:enumeration value="IMPLEMENTATION" />
      <xsd:enumeration value="INSTANCE-REFERENCE-PARAM-DEF" />
      <xsd:enumeration value="INTEGER-LITERAL" />
      <xsd:enumeration value="INTEGER-PARAM-DEF" />
      <xsd:enumeration value="INTEGER-TYPE" />
      <xsd:enumeration value="INTER-RUNNABLE-VARIABLE" />
      <xsd:enumeration value="INTERNAL-BEHAVIOR" />
      <xsd:enumeration value="INTERRUPT-CONSUME-HW-PORT" />
      <xsd:enumeration value="INTERRUPT-HW-PORT" />
      <xsd:enumeration value="INTERRUPT-PRODUCE-HW-PORT" />
      <xsd:enumeration value="LIN-CLUSTER" />
      <xsd:enumeration value="LIN-COMMUNICATION-CONTROLLER" />
      <xsd:enumeration value="LIN-FRAME-TRIGGERING" />
      <xsd:enumeration value="LIN-MASTER" />
      <xsd:enumeration value="LIN-SCHEDULE-TABLE" />
      <xsd:enumeration value="LIN-SLAVE" />
      <xsd:enumeration value="LINKER" />
      <xsd:enumeration value="LINKER-SYMBOL-DEF" />
      <xsd:enumeration value="MEASURED-EXECUTION-TIME" />
      <xsd:enumeration value="MEASURED-HEAP-USAGE" />
      <xsd:enumeration value="MEASURED-STACK-USAGE" />
      <xsd:enumeration value="MEMORY-MAPPED-ASSEMBLY-HW-CONNECTION" />
      <xsd:enumeration value="MEMORY-MAPPED-DELEGATION-HW-CONNECTION" />
      <xsd:enumeration value="MEMORY-MAPPED-HW-PORT" />
      <xsd:enumeration value="MEMORY-SECTION" />
      <xsd:enumeration value="MODE-DECLARATION" />
      <xsd:enumeration value="MODE-DECLARATION-GROUP" />
      <xsd:enumeration value="MODE-DECLARATION-GROUP-PROTOTYPE" />
      <xsd:enumeration value="MODE-SWITCH-EVENT" />
      <xsd:enumeration value="MODE-SWITCH-POINT" />
      <xsd:enumeration value="MODE-SWITCHED-ACK-EVENT" />
      <xsd:enumeration value="MODULE-CONFIGURATION" />
      <xsd:enumeration value="MODULE-DEF" />
      <xsd:enumeration value="MULTIPLEXED-I-PDU" />
      <xsd:enumeration value="N-PDU" />
      <xsd:enumeration value="NM-PDU" />
      <xsd:enumeration value="NV-BLOCK-NEEDS" />
      <xsd:enumeration value="OPAQUE-LITERAL" />
      <xsd:enumeration value="OPAQUE-TYPE" />
      <xsd:enumeration value="OPERATION-INVOKED-EVENT" />
      <xsd:enumeration value="OPERATION-PROTOTYPE" />
      <xsd:enumeration value="OSCILLATOR" />
      <xsd:enumeration value="P-PORT-PROTOTYPE" />
      <xsd:enumeration value="PWD" />
      <xsd:enumeration value="PWM" />
      <xsd:enumeration value="PACKAGEABLE-ELEMENT" />
      <xsd:enumeration value="PARAM-CONF-CONTAINER-DEF" />
      <xsd:enumeration value="PDU" />
      <xsd:enumeration value="PDU-TO-FRAME-MAPPING" />
      <xsd:enumeration value="PER-INSTANCE-MEMORY" />
      <xsd:enumeration value="PERIPHERAL" />
      <xsd:enumeration value="PERIPHERAL-HW-PORT" />
      <xsd:enumeration value="PHYSICAL-CHANNEL" />
      <xsd:enumeration value="PHYSICAL-DIMENSION" />
      <xsd:enumeration value="PORT-INTERFACE" />
      <xsd:enumeration value="PORT-PROTOTYPE" />
      <xsd:enumeration value="POWER-DRIVER-HW-ELEMENT" />
      <xsd:enumeration value="POWER-DRIVER-HW-PORT" />
      <xsd:enumeration value="POWER-SUPPLY-HW-ELEMENT" />
      <xsd:enumeration value="POWER-SUPPLY-HW-PORT" />
      <xsd:enumeration value="PRIMITIVE-SPECIFICATION" />
      <xsd:enumeration value="PRIMITIVE-TYPE" />
      <xsd:enumeration value="PROCESSING-UNIT" />
      <xsd:enumeration value="PROVIDED-MEMORY-SEGMENT" />
      <xsd:enumeration value="PROVIDED-NV-MEMORY-SEGMENT" />
      <xsd:enumeration value="PULSE-WIDTH-PERIPHERAL" />
      <xsd:enumeration value="R-PORT-PROTOTYPE" />
      <xsd:enumeration value="RTE-EVENT" />
      <xsd:enumeration value="REAL-LITERAL" />
      <xsd:enumeration value="REAL-TYPE" />
      <xsd:enumeration value="RECORD-ELEMENT" />
      <xsd:enumeration value="RECORD-SPECIFICATION" />
      <xsd:enumeration value="RECORD-TYPE" />
      <xsd:enumeration value="REFERENCE-PARAM-DEF" />
      <xsd:enumeration value="RESOURCE-CONSUMPTION" />
      <xsd:enumeration value="ROUGH-ESTIMATE-HEAP-USAGE" />
      <xsd:enumeration value="ROUGH-ESTIMATE-OF-EXECUTION-TIME" />
      <xsd:enumeration value="ROUGH-ESTIMATE-STACK-USAGE" />
      <xsd:enumeration value="RUNNABLE-ENTITY" />
      <xsd:enumeration value="SDG-CAPTION" />
      <xsd:enumeration value="SENDER-RECEIVER-INTERFACE" />
      <xsd:enumeration value="SENSOR-ACTUATOR-HW" />
      <xsd:enumeration value="SENSOR-ACTUATOR-SOFTWARE-COMPONENT-TYPE" />
      <xsd:enumeration value="SENSOR-HW" />
      <xsd:enumeration value="SERVER-CALL-POINT" />
      <xsd:enumeration value="SERVICE-COMPONENT-PROTOTYPE" />
      <xsd:enumeration value="SERVICE-COMPONENT-TYPE" />
      <xsd:enumeration value="SERVICE-CONNECTOR-PROTOTYPE" />
      <xsd:enumeration value="SERVICE-NEEDS" />
      <xsd:enumeration value="SIGNAL-I-PDU" />
      <xsd:enumeration value="SIGNAL-PORT" />
      <xsd:enumeration value="SIMULATED-EXECUTION-TIME" />
      <xsd:enumeration value="SOFTWARE-COMPOSITION" />
      <xsd:enumeration value="STACK-USAGE" />
      <xsd:enumeration value="STD" />
      <xsd:enumeration value="STRING-LITERAL" />
      <xsd:enumeration value="STRING-PARAM-DEF" />
      <xsd:enumeration value="STRING-TYPE" />
      <xsd:enumeration value="SUBSTITUTION-FRAME" />
      <xsd:enumeration value="SUPERVISED-ENTITY-NEEDS" />
      <xsd:enumeration value="SUPPORTED-DATA-TYPE" />
      <xsd:enumeration value="SW-ADDR-METHOD" />
      <xsd:enumeration value="SW-AXIS-TYPE" />
      <xsd:enumeration value="SW-BASE-TYPE" />
      <xsd:enumeration value="SW-CALPRM" />
      <xsd:enumeration value="SW-CALPRM-PROTOTYPE" />
      <xsd:enumeration value="SW-CLASS" />
      <xsd:enumeration value="SW-CLASS-ATTR-IMPL" />
      <xsd:enumeration value="SW-CLASS-INSTANCE" />
      <xsd:enumeration value="SW-CLASS-PROTOTYPE" />
      <xsd:enumeration value="SW-CODE-SYNTAX" />
      <xsd:enumeration value="SW-GENERIC-AXIS-PARAM-TYPE" />
      <xsd:enumeration value="SW-RECORD-LAYOUT" />
      <xsd:enumeration value="SW-SERVICE" />
      <xsd:enumeration value="SW-SERVICE-ARG" />
      <xsd:enumeration value="SW-SERVICE-PROTOTYPE" />
      <xsd:enumeration value="SW-VARIABLE" />
      <xsd:enumeration value="SW-VARIABLE-PROTOTYPE" />
      <xsd:enumeration value="SWC-COM-MGR-USER-NEEDS" />
      <xsd:enumeration value="SWC-DIAGNOSTIC-COMMUNICATION-NEEDS" />
      <xsd:enumeration value="SWC-DIAGNOSTIC-EVENT-NEEDS" />
      <xsd:enumeration value="SWC-ECU-STATE-MGR-USER-NEEDS" />
      <xsd:enumeration value="SWC-FUNCTION-INHIBITION-NEEDS" />
      <xsd:enumeration value="SWC-IMPLEMENTATION" />
      <xsd:enumeration value="SWC-NV-BLOCK-NEEDS" />
      <xsd:enumeration value="SWC-SUPERVISED-ENTITY-NEEDS" />
      <xsd:enumeration value="SWC-TO-ECU-MAPPING" />
      <xsd:enumeration value="SWC-TO-IMPL-MAPPING" />
      <xsd:enumeration value="SYMBOLIC-NAME-REFERENCE-PARAM-DEF" />
      <xsd:enumeration value="SYNCHRONOUS-SERVER-CALL-POINT" />
      <xsd:enumeration value="SYSTEM" />
      <xsd:enumeration value="SYSTEM-MAPPING" />
      <xsd:enumeration value="SYSTEM-SIGNAL" />
      <xsd:enumeration value="SYSTEM-SIGNAL-GROUP" />
      <xsd:enumeration value="TIMER" />
      <xsd:enumeration value="TIMING-EVENT" />
      <xsd:enumeration value="UNIT" />
      <xsd:enumeration value="UNIT-GROUP" />
      <xsd:enumeration value="VALUE-SPECIFICATION" />
      <xsd:enumeration value="WAIT-POINT" />
      <xsd:enumeration value="WATCH-DOG" />
      <xsd:enumeration value="WORST-CASE-EXECUTION-TIME" />
      <xsd:enumeration value="WORST-CASE-HEAP-USAGE" />
      <xsd:enumeration value="WORST-CASE-STACK-USAGE" />
      <xsd:enumeration value="XDOC" />
      <xsd:enumeration value="XFILE" />
      <xsd:enumeration value="XREF-TARGET" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class Inlines::Ie -->
  <xsd:group name="IE">
    <xsd:annotation>
      <xsd:documentation>Use &lt;ie&gt; to create an index that is to appear in the index directory.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__IE_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Inlines::Ie -->
  <xsd:complexType name="IE" abstract="false" mixed="true">
    <xsd:annotation>
      <xsd:documentation>Use &lt;ie&gt; to create an index that is to appear in the index directory.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__IE_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice minOccurs="0" maxOccurs="unbounded" />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Implementation::Implementation -->
  <xsd:group name="IMPLEMENTATION">
    <xsd:annotation>
      <xsd:documentation>Description of an implementation a single software component or module.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CODE-DESCRIPTORS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="CODE" type="AR:CODE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="CODE-GENERATOR" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Optional: code generator used.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="COMPILERS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="COMPILER" type="AR:COMPILER" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="IMPLEMENTATION-DEPENDENCIES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="DEPENDENCY-ON-FILE" type="AR:DEPENDENCY-ON-FILE" />
            <xsd:element name="DEPENDENCY-ON-LIBRARY" type="AR:DEPENDENCY-ON-LIBRARY" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="LINKERS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="LINKER" type="AR:LINKER" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PROCESSOR-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="PROCESSOR-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:PROCESSING-UNIT--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PROGRAMMING-LANGUAGE" type="AR:PROGRAMMINGLANGUAGE-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Programming language the implementation was created in.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="RESOURCE-CONSUMPTION" type="AR:RESOURCE-CONSUMPTION" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SW-MAJOR-VERSION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Major version number of this implementation. The numbering is vendor specific.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SW-MINOR-VERSION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Minor version number of this implementation. The numbering is vendor specific.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SW-PATCH-VERSION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Patch version number of this implementation. The numbering is vendor specific.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="VENDOR-ID" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Vendor ID of this Implementation according to the AUTOSAR vendor list</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Implementation::Implementation -->
  <xsd:complexType name="IMPLEMENTATION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Description of an implementation a single software component or module.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:IMPLEMENTATION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUCParameterDefTemplate::ImplementationConfigClass -->
  <xsd:group name="IMPLEMENTATION-CONFIG-CLASS">
    <xsd:annotation>
      <xsd:documentation>Specifies which ConfigurationClass this parameter has in the individual ConfigurationVariants.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CONFIG-CLASS" type="AR:CONFIGURATION-CLASS" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Specifies the ConfigurationClass for the given ConfigurationVariant.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="CONFIG-VARIANT" type="AR:CONFIGURATION-VARIANT" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Specifies the ConfigurationVariant the ConfigurationClass is specified for.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUCParameterDefTemplate::ImplementationConfigClass -->
  <xsd:complexType name="IMPLEMENTATION-CONFIG-CLASS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specifies which ConfigurationClass this parameter has in the individual ConfigurationVariants.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IMPLEMENTATION-CONFIG-CLASS" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class DataMapping::IndexedArrayElement -->
  <xsd:group name="INDEXED-ARRAY-ELEMENT">
    <xsd:sequence>
      <xsd:element name="ARRAY-ELEMENT-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:ARRAY-ELEMENT--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="INDEX" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Position of an element in an array.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DataMapping::IndexedArrayElement -->
  <xsd:complexType name="INDEXED-ARRAY-ELEMENT" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:INDEXED-ARRAY-ELEMENT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ECUCParameterDefTemplate::InstanceReferenceParamDef -->
  <xsd:group name="INSTANCE-REFERENCE-PARAM-DEF">
    <xsd:annotation>
      <xsd:documentation>Specify a reference to an XML description of an entity desribed in another AUTOSAR template using the INSTANCE REFERENCE semantics.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DESTINATION-CONTEXT" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The context in the AUTOSAR Metamodel to which' this reference is allowed to point to.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="DESTINATION-TYPE" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The type in the AUTOSAR Metamodel to which' instance this reference is allowed to point to.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUCParameterDefTemplate::InstanceReferenceParamDef -->
  <xsd:complexType name="INSTANCE-REFERENCE-PARAM-DEF" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specify a reference to an XML description of an entity desribed in another AUTOSAR template using the INSTANCE REFERENCE semantics.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PARAM-CONF-MULTIPLICITY" />
      <xsd:group ref="AR:COMMON-CONFIGURATION-ATTRIBUTES" />
      <xsd:group ref="AR:INSTANCE-REFERENCE-PARAM-DEF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUCDescriptionTemplate::InstanceReferenceValue -->
  <xsd:group name="INSTANCE-REFERENCE-VALUE">
    <xsd:annotation>
      <xsd:documentation>InstanceReference representation in the ECU Configuration.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="VALUE-IREF" type="AR:INSTANCE-REFERENCE-VALUE--VALUE-IREF" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUCDescriptionTemplate::InstanceReferenceValue -->
  <xsd:complexType name="INSTANCE-REFERENCE-VALUE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>InstanceReference representation in the ECU Configuration.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:CONFIG-REFERENCE-VALUE" />
      <xsd:group ref="AR:INSTANCE-REFERENCE-VALUE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class _instanceRef::InstanceReferenceValue_value -->
  <xsd:group name="INSTANCE-REFERENCE-VALUE--VALUE-IREF">
    <xsd:sequence>
      <xsd:element name="CONTEXT-REF" minOccurs="0" maxOccurs="unbounded">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:IDENTIFIABLE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="VALUE-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:IDENTIFIABLE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::InstanceReferenceValue_value -->
  <xsd:complexType name="INSTANCE-REFERENCE-VALUE--VALUE-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:INSTANCE-REFERENCE-VALUE--VALUE-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Constants::IntegerLiteral -->
  <xsd:group name="INTEGER-LITERAL">
    <xsd:annotation>
      <xsd:documentation>Constant integer value.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="VALUE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The value.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Constants::IntegerLiteral -->
  <xsd:complexType name="INTEGER-LITERAL" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Constant integer value.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:DATA-PROTOTYPE" />
      <xsd:group ref="AR:INTEGER-LITERAL" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUCParameterDefTemplate::IntegerParamDef -->
  <xsd:group name="INTEGER-PARAM-DEF">
    <xsd:annotation>
      <xsd:documentation>Configuration parameter type for Integer.</xsd:documentation>
      <xsd:appinfo source="tags">xml.sequenceOffset="0"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DEFAULT-VALUE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Default value of the integer configuration parameter.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MAX" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>max value allowed for the parameter defined.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MIN" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>min value allowed for the parameter defined.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUCParameterDefTemplate::IntegerParamDef -->
  <xsd:complexType name="INTEGER-PARAM-DEF" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Configuration parameter type for Integer.</xsd:documentation>
      <xsd:appinfo source="tags">xml.sequenceOffset="0"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PARAM-CONF-MULTIPLICITY" />
      <xsd:group ref="AR:COMMON-CONFIGURATION-ATTRIBUTES" />
      <xsd:group ref="AR:CONFIG-PARAMETER" />
      <xsd:group ref="AR:INTEGER-PARAM-DEF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Datatypes::IntegerType -->
  <xsd:group name="INTEGER-TYPE">
    <xsd:annotation>
      <xsd:documentation>This data-type are the integers in the interval defined by the Range.</xsd:documentation>
      <xsd:appinfo source="tags">java.instanceClass="java.lang.Integer"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Datatypes::IntegerType -->
  <xsd:complexType name="INTEGER-TYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This data-type are the integers in the interval defined by the Range.</xsd:documentation>
      <xsd:appinfo source="tags">java.instanceClass="java.lang.Integer"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PRIMITIVE-TYPE" />
      <xsd:group ref="AR:RANGE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUCDescriptionTemplate::IntegerValue -->
  <xsd:group name="INTEGER-VALUE">
    <xsd:annotation>
      <xsd:documentation>Representing a configuration value of definition type IntegerParamDef</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="VALUE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Stores the value of the Integer parameter.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUCDescriptionTemplate::IntegerValue -->
  <xsd:complexType name="INTEGER-VALUE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Representing a configuration value of definition type IntegerParamDef</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:PARAMETER-VALUE" />
      <xsd:group ref="AR:INTEGER-VALUE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class InterRunnableCommunication::InterRunnableVariable -->
  <xsd:group name="INTER-RUNNABLE-VARIABLE">
    <xsd:annotation>
      <xsd:documentation>Implement state message semantics for establishing communication among runnables of the same component.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="COMMUNICATION-APPROACH" type="AR:COMMUNICATION-APPROACH-TYPE" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Communication among RunnableEntities resembles the approaches taken for the communication among software components. The explicit communication corresponds to DataReceivePoint/DataSendPoint. The implicit communication resembles DataReadAccess/DataWriteAccess</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="INIT-VALUE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:VALUE-SPECIFICATION--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class InterRunnableCommunication::InterRunnableVariable -->
  <xsd:complexType name="INTER-RUNNABLE-VARIABLE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Implement state message semantics for establishing communication among runnables of the same component.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:DATA-PROTOTYPE" />
      <xsd:group ref="AR:INTER-RUNNABLE-VARIABLE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="INTER-RUNNABLE-VARIABLE--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="INTER-RUNNABLE-VARIABLE" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class SwcInternalBehavior::InternalBehavior -->
  <xsd:group name="INTERNAL-BEHAVIOR">
    <xsd:annotation>
      <xsd:documentation>The internal behavior of an atomic software component describes the RTE relevant aspects of a component, i.e. the runnable entities and the events they respond to.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="COMPONENT-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:ATOMIC-SOFTWARE-COMPONENT-TYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="EVENTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="ASYNCHRONOUS-SERVER-CALL-RETURNS-EVENT" type="AR:ASYNCHRONOUS-SERVER-CALL-RETURNS-EVENT" />
            <xsd:element name="DATA-RECEIVE-ERROR-EVENT" type="AR:DATA-RECEIVE-ERROR-EVENT" />
            <xsd:element name="DATA-RECEIVED-EVENT" type="AR:DATA-RECEIVED-EVENT" />
            <xsd:element name="DATA-SEND-COMPLETED-EVENT" type="AR:DATA-SEND-COMPLETED-EVENT" />
            <xsd:element name="MODE-SWITCH-EVENT" type="AR:MODE-SWITCH-EVENT" />
            <xsd:element name="MODE-SWITCHED-ACK-EVENT" type="AR:MODE-SWITCHED-ACK-EVENT" />
            <xsd:element name="OPERATION-INVOKED-EVENT" type="AR:OPERATION-INVOKED-EVENT" />
            <xsd:element name="TIMING-EVENT" type="AR:TIMING-EVENT" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="EXCLUSIVE-AREAS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="EXCLUSIVE-AREA" type="AR:EXCLUSIVE-AREA" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="INTER-RUNNABLE-VARIABLES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="INTER-RUNNABLE-VARIABLE" type="AR:INTER-RUNNABLE-VARIABLE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PER-INSTANCE-CALPRMS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="CALPRM-ELEMENT-PROTOTYPE" type="AR:CALPRM-ELEMENT-PROTOTYPE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PER-INSTANCE-MEMORYS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="PER-INSTANCE-MEMORY" type="AR:PER-INSTANCE-MEMORY" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PORT-API-OPTIONS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="PORT-API-OPTION" type="AR:PORT-API-OPTION" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="RUNNABLES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="RUNNABLE-ENTITY" type="AR:RUNNABLE-ENTITY" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SERVICE-NEEDSS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="COM-MGR-USER-NEEDS" type="AR:COM-MGR-USER-NEEDS" />
            <xsd:element name="DIAGNOSTIC-COMMUNICATION-NEEDS" type="AR:DIAGNOSTIC-COMMUNICATION-NEEDS" />
            <xsd:element name="DIAGNOSTIC-EVENT-NEEDS" type="AR:DIAGNOSTIC-EVENT-NEEDS" />
            <xsd:element name="ECU-STATE-MGR-USER-NEEDS" type="AR:ECU-STATE-MGR-USER-NEEDS" />
            <xsd:element name="FUNCTION-INHIBITION-NEEDS" type="AR:FUNCTION-INHIBITION-NEEDS" />
            <xsd:element name="NV-BLOCK-NEEDS" type="AR:NV-BLOCK-NEEDS" />
            <xsd:element name="SERVICE-NEEDS" type="AR:SERVICE-NEEDS" />
            <xsd:element name="SUPERVISED-ENTITY-NEEDS" type="AR:SUPERVISED-ENTITY-NEEDS" />
            <xsd:element name="SWC-COM-MGR-USER-NEEDS" type="AR:SWC-COM-MGR-USER-NEEDS" />
            <xsd:element name="SWC-DIAGNOSTIC-COMMUNICATION-NEEDS" type="AR:SWC-DIAGNOSTIC-COMMUNICATION-NEEDS" />
            <xsd:element name="SWC-DIAGNOSTIC-EVENT-NEEDS" type="AR:SWC-DIAGNOSTIC-EVENT-NEEDS" />
            <xsd:element name="SWC-ECU-STATE-MGR-USER-NEEDS" type="AR:SWC-ECU-STATE-MGR-USER-NEEDS" />
            <xsd:element name="SWC-FUNCTION-INHIBITION-NEEDS" type="AR:SWC-FUNCTION-INHIBITION-NEEDS" />
            <xsd:element name="SWC-NV-BLOCK-NEEDS" type="AR:SWC-NV-BLOCK-NEEDS" />
            <xsd:element name="SWC-SUPERVISED-ENTITY-NEEDS" type="AR:SWC-SUPERVISED-ENTITY-NEEDS" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SHARED-CALPRMS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="CALPRM-ELEMENT-PROTOTYPE" type="AR:CALPRM-ELEMENT-PROTOTYPE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SUPPORTS-MULTIPLE-INSTANTIATION" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Indicate whether the corresponding software-component can be multiply instantiated on one ECU. In this case the attribute will result in an appropriate component API on programming language level (with or without instance handle).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SwcInternalBehavior::InternalBehavior -->
  <xsd:complexType name="INTERNAL-BEHAVIOR" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The internal behavior of an atomic software component describes the RTE relevant aspects of a component, i.e. the runnable entities and the events they respond to.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:INTERNAL-BEHAVIOR" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="INTERNAL-BEHAVIOR--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="INTERNAL-BEHAVIOR" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class GlobalConstraints::InternalConstrs -->
  <xsd:group name="INTERNAL-CONSTRS">
    <xsd:sequence>
      <xsd:element name="LOWER-LIMIT" type="AR:LIMIT" minOccurs="0" maxOccurs="1" />
      <xsd:element name="UPPER-LIMIT" type="AR:LIMIT" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class GlobalConstraints::InternalConstrs -->
  <xsd:complexType name="INTERNAL-CONSTRS" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:INTERNAL-CONSTRS" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ProcessingUnit::InterruptConsumeHWPort -->
  <xsd:group name="INTERRUPT-CONSUME-HW-PORT">
    <xsd:annotation>
      <xsd:documentation>This port represents the drain of an interrupt request, i.e. the HWElement (in the majority of cases this will be a ProcessingUnit) to which this HWPort is attached is capable of accepting interrupt requests.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ACTIVATION-SOURCE" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines which hardware resource activate the interrupt. Typically any peripheral HW Element  can activate an interrupt.  E.g. CAN, SCI, SPI, Timer, ADC. Even simple digital I/O can activate an interrupt. Some microC have in this context dedicatated pins which act only as activation for interrupt. The connection from the according HW Element is made by the HW Port.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="LATENCY" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Interrupt Latency: time passed from the occurrence of the interrupt request until the interrupt service routine is entered
- HW: Register organisation; operations are necessary for context save.
- SW: As SW can control the enabling/disabling of the interrupt SW determines a great part of the according time.
- System: several constraints define the min/max times allowed for software to enable / disable interrupts.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MASKABLE" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines if interrupts can be selected to be processed by the interrupt controller.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PRIORITY" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Some processing units offer different interrupt levels. It describes the priority in which the incoming interrupts are handled.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ProcessingUnit::InterruptConsumeHWPort -->
  <xsd:complexType name="INTERRUPT-CONSUME-HW-PORT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This port represents the drain of an interrupt request, i.e. the HWElement (in the majority of cases this will be a ProcessingUnit) to which this HWPort is attached is capable of accepting interrupt requests.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-PORT" />
      <xsd:group ref="AR:INTERRUPT-CONSUME-HW-PORT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ProcessingUnit::InterruptHWPort -->
  <xsd:group name="INTERRUPT-HW-PORT">
    <xsd:sequence />
  </xsd:group>
  <!-- element group for class ProcessingUnit::InterruptProduceHWPort -->
  <xsd:group name="INTERRUPT-PRODUCE-HW-PORT">
    <xsd:annotation>
      <xsd:documentation>This port represents the source of an interrupt request, i.e. the HWElement to which this port is attached is capable of raising interrupt requests.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ProcessingUnit::InterruptProduceHWPort -->
  <xsd:complexType name="INTERRUPT-PRODUCE-HW-PORT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This port represents the source of an interrupt request, i.e. the HWElement to which this port is attached is capable of raising interrupt requests.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-PORT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="INTERRUPT-PRODUCE-HW-PORT--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="INTERRUPT-PRODUCE-HW-PORT" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class LocalConstraints::Interstring -->
  <xsd:group name="INTERSTRING">
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class LocalConstraints::Interstring -->
  <xsd:complexType name="INTERSTRING" abstract="false" mixed="false">
    <xsd:sequence />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ApplicationAttributes::IoHwAbstractionServerAnnotation -->
  <xsd:group name="IO-HW-ABSTRACTION-SERVER-ANNOTATION">
    <xsd:annotation>
      <xsd:documentation>The IoHwAbstractionPort Annotation will only be used from a sensor- or an actuator component while interacting with the IoHwAbstraction layer</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="AGE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>In case of a SET operation, the age will be interpreted as Delay while in a GET operation (input) it specifies the Lifetime of the signal within the IoHwAbstraction Layer</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="ARGUMENT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:ARGUMENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="BSW-RANGE-MAX" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Specifies the maximum value of the Range the ECU-Signal is supposed to have</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="BSW-RANGE-MIN" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Specifies the maximum value of the Range the ECU-Signal is supposed to have.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="BSW-RESOLUTION" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This value is determined by an appropriate combination of the range, the unit as well as the data-elements type, i.e. (BswRangeMax-BswRangeMin) / (2^datatypelength - 1)</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="DATA-ELEMENT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:DATA-ELEMENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="FAILURE-MONITORING-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:PORT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="FILTERING-DEBOUNCING" type="AR:FILTER-DEBOUNCING-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This attribute is used to indicate what kind of filtering/debouncing has been put to the signal in the IoHwAbstraction layer. 

rawData means that no modification of the signal has been applied.This is the default value
debounceData means that the signal is a mean value
waitTimeData means that the signal is delivered by a GET operation after a certain amount of time</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PULSE-TEST" type="AR:PULSE-TEST-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This attribute indicates to the connected SensorActuatorSoftwareComponentType whether the DataElementPrototype can be used to generate pulse test sequences using the IoHwAbstraction layer</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SUPPORTS-REPORT-RUNNABLE" type="AR:REPORT-FEATURE" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SUPPORTS-WAKE-UP-RUNNABLE" type="AR:WAKE-UP" minOccurs="0" maxOccurs="1" />
      <xsd:element name="UNIT" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>These are either electrical units like Volts (V) or time units like milliseconds (ms). The unit is set according to the ECU Input signal class which is either analogue or modulation</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ApplicationAttributes::IoHwAbstractionServerAnnotation -->
  <xsd:complexType name="IO-HW-ABSTRACTION-SERVER-ANNOTATION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The IoHwAbstractionPort Annotation will only be used from a sensor- or an actuator component while interacting with the IoHwAbstraction layer</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:GENERAL-ANNOTATION" />
      <xsd:group ref="AR:IO-HW-ABSTRACTION-SERVER-ANNOTATION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class LanguageDataModel::L1 -->
  <xsd:group name="L-1">
    <xsd:annotation>
      <xsd:documentation>ParagraphInOneParticularLanguage

This is the text for a paragraph in one particular language. The language is denoted in the attribute l.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__L-1_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- attribute group for class LanguageDataModel::L1 -->
  <xsd:attributeGroup name="L-1">
    <xsd:annotation>
      <xsd:documentation>ParagraphInOneParticularLanguage

This is the text for a paragraph in one particular language. The language is denoted in the attribute l.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__L-1_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:attribute name="L" type="AR:L-ENUM" />
  </xsd:attributeGroup>
  <!-- complex type for class LanguageDataModel::L1 -->
  <xsd:complexType name="L-1" abstract="false" mixed="true">
    <xsd:annotation>
      <xsd:documentation>ParagraphInOneParticularLanguage

This is the text for a paragraph in one particular language. The language is denoted in the attribute l.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__L-1_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice minOccurs="0" maxOccurs="unbounded" />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:L-1" />
  </xsd:complexType>
  <!-- element group for class LanguageDataModel::L10 -->
  <xsd:group name="L-10">
    <xsd:annotation>
      <xsd:documentation>MixedContentForPlainText in one particular language. The language is dentoted in the attribute l.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__L-10_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- attribute group for class LanguageDataModel::L10 -->
  <xsd:attributeGroup name="L-10">
    <xsd:annotation>
      <xsd:documentation>MixedContentForPlainText in one particular language. The language is dentoted in the attribute l.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__L-10_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:attribute name="L" type="AR:L-ENUM" />
  </xsd:attributeGroup>
  <!-- complex type for class LanguageDataModel::L10 -->
  <xsd:complexType name="L-10" abstract="false" mixed="true">
    <xsd:annotation>
      <xsd:documentation>MixedContentForPlainText in one particular language. The language is dentoted in the attribute l.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__L-10_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice minOccurs="0" maxOccurs="unbounded" />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:L-10" />
  </xsd:complexType>
  <!-- element group for class LanguageDataModel::L2 -->
  <xsd:group name="L-2">
    <xsd:annotation>
      <xsd:documentation>MixedContentForOverviewParagraph in one particular language. The language is dentoted in the attribute l.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__L-2_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- attribute group for class LanguageDataModel::L2 -->
  <xsd:attributeGroup name="L-2">
    <xsd:annotation>
      <xsd:documentation>MixedContentForOverviewParagraph in one particular language. The language is dentoted in the attribute l.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__L-2_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:attribute name="L" type="AR:L-ENUM" />
  </xsd:attributeGroup>
  <!-- complex type for class LanguageDataModel::L2 -->
  <xsd:complexType name="L-2" abstract="false" mixed="true">
    <xsd:annotation>
      <xsd:documentation>MixedContentForOverviewParagraph in one particular language. The language is dentoted in the attribute l.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__L-2_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice minOccurs="0" maxOccurs="unbounded" />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:L-2" />
  </xsd:complexType>
  <!-- element group for class LanguageDataModel::L3 -->
  <xsd:group name="L-3">
    <xsd:annotation>
      <xsd:documentation>MixedContentForUnitNames in one particular language. The language is dentoted in the attribute l.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__L-3_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- attribute group for class LanguageDataModel::L3 -->
  <xsd:attributeGroup name="L-3">
    <xsd:annotation>
      <xsd:documentation>MixedContentForUnitNames in one particular language. The language is dentoted in the attribute l.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__L-3_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:attribute name="L" type="AR:L-ENUM" />
  </xsd:attributeGroup>
  <!-- complex type for class LanguageDataModel::L3 -->
  <xsd:complexType name="L-3" abstract="false" mixed="true">
    <xsd:annotation>
      <xsd:documentation>MixedContentForUnitNames in one particular language. The language is dentoted in the attribute l.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__L-3_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice minOccurs="0" maxOccurs="unbounded" />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:L-3" />
  </xsd:complexType>
  <!-- element group for class LanguageDataModel::L4 -->
  <xsd:group name="L-4">
    <xsd:annotation>
      <xsd:documentation>MixedContentForLongNames  in one particular language. The language is dentoted in the attribute l.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__L-4_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- attribute group for class LanguageDataModel::L4 -->
  <xsd:attributeGroup name="L-4">
    <xsd:annotation>
      <xsd:documentation>MixedContentForLongNames  in one particular language. The language is dentoted in the attribute l.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__L-4_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:attribute name="L" type="AR:L-ENUM" />
  </xsd:attributeGroup>
  <!-- complex type for class LanguageDataModel::L4 -->
  <xsd:complexType name="L-4" abstract="false" mixed="true">
    <xsd:annotation>
      <xsd:documentation>MixedContentForLongNames  in one particular language. The language is dentoted in the attribute l.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__L-4_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice minOccurs="0" maxOccurs="unbounded" />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:L-4" />
  </xsd:complexType>
  <!-- element group for class LanguageDataModel::L5 -->
  <xsd:group name="L-5">
    <xsd:annotation>
      <xsd:documentation>MixedContentForVerbatim in one particular language. The language is dentoted in the attribute l.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__L-5_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- attribute group for class LanguageDataModel::L5 -->
  <xsd:attributeGroup name="L-5">
    <xsd:annotation>
      <xsd:documentation>MixedContentForVerbatim in one particular language. The language is dentoted in the attribute l.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__L-5_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:attribute name="L" type="AR:L-ENUM" />
  </xsd:attributeGroup>
  <!-- complex type for class LanguageDataModel::L5 -->
  <xsd:complexType name="L-5" abstract="false" mixed="true">
    <xsd:annotation>
      <xsd:documentation>MixedContentForVerbatim in one particular language. The language is dentoted in the attribute l.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__L-5_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice minOccurs="0" maxOccurs="unbounded" />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:L-5" />
  </xsd:complexType>
  <!-- element group for class LocalConstraints::Limit -->
  <xsd:group name="LIMIT">
    <xsd:sequence />
  </xsd:group>
  <!-- attribute group for class LocalConstraints::Limit -->
  <xsd:attributeGroup name="LIMIT">
    <xsd:attribute name="INTERVAL-TYPE" type="AR:INTERVAL-TYPE-ENUM" />
  </xsd:attributeGroup>
  <!-- complex type for class LocalConstraints::Limit -->
  <xsd:complexType name="LIMIT" abstract="false" mixed="true">
    <xsd:choice minOccurs="0" maxOccurs="unbounded" />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:LIMIT" />
  </xsd:complexType>
  <!-- element group for class LinTopology::LinCluster -->
  <xsd:group name="LIN-CLUSTER">
    <xsd:annotation>
      <xsd:documentation>LIN specific attributes</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SCHEDULE-TABLES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="LIN-SCHEDULE-TABLE" type="AR:LIN-SCHEDULE-TABLE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class LinTopology::LinCluster -->
  <xsd:complexType name="LIN-CLUSTER" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>LIN specific attributes</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:COMMUNICATION-CLUSTER" />
      <xsd:group ref="AR:LIN-CLUSTER" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class LinTopology::LinCommunicationController -->
  <xsd:group name="LIN-COMMUNICATION-CONTROLLER">
    <xsd:annotation>
      <xsd:documentation>LIN bus specific communication port instance attributes.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <xsd:simpleType name="LIN-COMMUNICATION-CONTROLLER--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="LIN-COMMUNICATION-CONTROLLER" />
      <xsd:enumeration value="LIN-MASTER" />
      <xsd:enumeration value="LIN-SLAVE" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class LinCommunication::LinFrameTriggering -->
  <xsd:group name="LIN-FRAME-TRIGGERING">
    <xsd:annotation>
      <xsd:documentation>Lin specific attributes to the FrameTriggering</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CHECKSUM-TYPE" type="AR:LIN-CHECKSUM-TYPE" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Type of checksum that the frame is using.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="IDENTIFIER" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>To describe a frames identifier on the communication system, usualy with a fixed identifierValue.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="RELATIVELY-SCHEDULED-TIMINGS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="ASSIGN-FRAME-ID-TIMING" type="AR:ASSIGN-FRAME-ID-TIMING" />
            <xsd:element name="ASSIGN-NAD-TIMING" type="AR:ASSIGN-NAD-TIMING" />
            <xsd:element name="DATA-TIMING" type="AR:DATA-TIMING" />
            <xsd:element name="RELATIVELY-SCHEDULED-TIMING" type="AR:RELATIVELY-SCHEDULED-TIMING" />
            <xsd:element name="UNASSIGN-FRAME-ID-TIMING" type="AR:UNASSIGN-FRAME-ID-TIMING" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class LinCommunication::LinFrameTriggering -->
  <xsd:complexType name="LIN-FRAME-TRIGGERING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Lin specific attributes to the FrameTriggering</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:FRAME-TRIGGERING" />
      <xsd:group ref="AR:LIN-FRAME-TRIGGERING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="LIN-FRAME-TRIGGERING--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="LIN-FRAME-TRIGGERING" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class LinTopology::LinMaster -->
  <xsd:group name="LIN-MASTER">
    <xsd:annotation>
      <xsd:documentation>Describing the properties of the refering ecu as a LIN master.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="TIME-BASE" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Time base is mandatory for the master. It is not used for slaves. 
LIN 2.0 Spec states: "The time_base value specifies the used time base in the master node to generate the maximum allowed frame transfer time." 
The time base shall be specified AUTOSAR conform in seconds.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="TIME-BASE-JITTER" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>timeBaseJitter is a mandatory attribute for the master and not used for slaves. 
LIN 2.0 Spec states: "The jitter value specifies the differences between the maximum and minimum delay from time base start point to the frame header sending start point (falling edge of BREAK signal)." 
The jitter shall be specified AUTOSAR conform in seconds.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class LinTopology::LinMaster -->
  <xsd:complexType name="LIN-MASTER" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Describing the properties of the refering ecu as a LIN master.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:COMMUNICATION-CONTROLLER" />
      <xsd:group ref="AR:LIN-MASTER" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class LinCommunication::LinScheduleTable -->
  <xsd:group name="LIN-SCHEDULE-TABLE">
    <xsd:annotation>
      <xsd:documentation>The master task (in the master node) transmits frame headers based on a schedule table. The schedule table specifies the identifiers for each header and the interval between the start of a frame and the start of the following frame.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="PRIORITY" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Priority of the schedule table. The priority is used in the schedule table manager. The RUN_ONCE run mode schedules shall not have equal priority. Priority 0 is reserved for the NULL_SCHEDULE. Priority 255 is reserved for the RUN_CONTINUOUS run mode.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="RUN-MODE" type="AR:RUN-MODE" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The schedule table can be executed in two different modes.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class LinCommunication::LinScheduleTable -->
  <xsd:complexType name="LIN-SCHEDULE-TABLE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The master task (in the master node) transmits frame headers based on a schedule table. The schedule table specifies the identifiers for each header and the interval between the start of a frame and the start of the following frame.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:LIN-SCHEDULE-TABLE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="LIN-SCHEDULE-TABLE--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="LIN-SCHEDULE-TABLE" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class LinTopology::LinSlave -->
  <xsd:group name="LIN-SLAVE">
    <xsd:annotation>
      <xsd:documentation>Describing the properties of the refering ecu as a LIN slave.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CONFIGURED-NAD" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>To distinguish LIN slaves that are used twice or more within the same cluster.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PROTOCOL-VERSION" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Version specifier for a communication protocol.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class LinTopology::LinSlave -->
  <xsd:complexType name="LIN-SLAVE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Describing the properties of the refering ecu as a LIN slave.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:COMMUNICATION-CONTROLLER" />
      <xsd:group ref="AR:LIN-SLAVE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class TransportProtocols::LinTpChannel -->
  <xsd:group name="LIN-TP-CHANNEL">
    <xsd:annotation>
      <xsd:documentation>A LinTP channel represents an internal path for the transmission or reception of a Pdu via LinTp
and describes the the sender and the receiver of this particular communication.

The LinTp module routes a Pdu through the connection channel</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DATA-PDU-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:N-PDU--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="FLOW-CONTROL-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:N-PDU--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="LIN-TP-N-SDU-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:I-PDU--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SOURCE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMMUNICATION-CONNECTOR--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="TARGET-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMMUNICATION-CONNECTOR--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class TransportProtocols::LinTpChannel -->
  <xsd:complexType name="LIN-TP-CHANNEL" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A LinTP channel represents an internal path for the transmission or reception of a Pdu via LinTp
and describes the the sender and the receiver of this particular communication.

The LinTp module routes a Pdu through the connection channel</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:LIN-TP-CHANNEL" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Implementation::Linker -->
  <xsd:group name="LINKER">
    <xsd:annotation>
      <xsd:documentation>Specifies the linker attributes used to decribe how the linker shall be invoked.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="NAME" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Linker name.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="OPTIONS" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Specifies the linker options.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="VENDOR" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Vendor of linker.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="VERSION" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Exact version of linker executable.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Implementation::Linker -->
  <xsd:complexType name="LINKER" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specifies the linker attributes used to decribe how the linker shall be invoked.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:LINKER" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUCParameterDefTemplate::LinkerSymbolDef -->
  <xsd:group name="LINKER-SYMBOL-DEF">
    <xsd:annotation>
      <xsd:documentation>Configuration parameter type for Linker Symbol Names like those used to specify memory locations of variables and constants.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ECUCParameterDefTemplate::LinkerSymbolDef -->
  <xsd:complexType name="LINKER-SYMBOL-DEF" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Configuration parameter type for Linker Symbol Names like those used to specify memory locations of variables and constants.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PARAM-CONF-MULTIPLICITY" />
      <xsd:group ref="AR:COMMON-CONFIGURATION-ATTRIBUTES" />
      <xsd:group ref="AR:CONFIG-PARAMETER" />
      <xsd:group ref="AR:STRING-PARAM-DEF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUCDescriptionTemplate::LinkerSymbolValue -->
  <xsd:group name="LINKER-SYMBOL-VALUE">
    <xsd:annotation>
      <xsd:documentation>Representing a configuration value of definition type LinkerSymbolDef</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ECUCDescriptionTemplate::LinkerSymbolValue -->
  <xsd:complexType name="LINKER-SYMBOL-VALUE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Representing a configuration value of definition type LinkerSymbolDef</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:PARAMETER-VALUE" />
      <xsd:group ref="AR:STRING-VALUE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ProcessingUnit::MPU -->
  <xsd:group name="MPU">
    <xsd:annotation>
      <xsd:documentation>A MPU provides means where the memory access within a defined program flow of a PU is controlled. In case of a failure an exception routine e.g. interrupt is activated.
A MPU is implemented as an independent hardware block in a device separate to the processing unit. A MPU does not perform any data manipulation, only in case of an error a change in the processor control flow is forced.
The number of individual checked memory ranges is limited to the registers available for specifying the memory ranges. One individual memory range is in the following referenced as MPU Channel.
In most cases the MPU consists of a set of registers, which do range checking of the addresses asserted by the program on the address bus as well as the access type to the according address. The checking of the address ranges is also coupled to the address range of the program, which runs under the control of the MPU.
The MPU also can be coupled with one of the different processing elements of a device like the PU itself, a DMA or a Coprocessor.
In order to have a broad usage of a MPU a specification of filter values is often allowed, so very user specific selection methods are possible.
Typical use case for a MPU: A 3rd party software routine is allowed only to access a defined memory-area. Any access outside the defined memory area will be denied and control will be transferred to the supervising operating system. A error handling routine will be started.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CHANNEL-COUNT" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines the number of individual MPU channels are available.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PROTECTED-MEMORY-HW-PORT-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="PROTECTED-MEMORY-HW-PORT-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:MEMORY-MAPPED-HW-PORT--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="RAISED-INTERRUPTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="INTERRUPT-PRODUCE-HW-PORT" type="AR:INTERRUPT-PRODUCE-HW-PORT" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ProcessingUnit::MPU -->
  <xsd:complexType name="MPU" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A MPU provides means where the memory access within a defined program flow of a PU is controlled. In case of a failure an exception routine e.g. interrupt is activated.
A MPU is implemented as an independent hardware block in a device separate to the processing unit. A MPU does not perform any data manipulation, only in case of an error a change in the processor control flow is forced.
The number of individual checked memory ranges is limited to the registers available for specifying the memory ranges. One individual memory range is in the following referenced as MPU Channel.
In most cases the MPU consists of a set of registers, which do range checking of the addresses asserted by the program on the address bus as well as the access type to the according address. The checking of the address ranges is also coupled to the address range of the program, which runs under the control of the MPU.
The MPU also can be coupled with one of the different processing elements of a device like the PU itself, a DMA or a Coprocessor.
In order to have a broad usage of a MPU a specification of filter values is often allowed, so very user specific selection methods are possible.
Typical use case for a MPU: A 3rd party software routine is allowed only to access a defined memory-area. Any access outside the defined memory area will be denied and control will be transferred to the supervising operating system. A error handling routine will be started.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:MPU" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class SWmapping::MappingConstraint -->
  <xsd:group name="MAPPING-CONSTRAINT">
    <xsd:annotation>
      <xsd:documentation>Different constraints that may be used to limit the mapping of SW components to ECUs.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- element group for class Filter::MaskedNewDiffersMaskedOld -->
  <xsd:group name="MASKED-NEW-DIFFERS-MASKED-OLD">
    <xsd:annotation>
      <xsd:documentation>Pass messages where the masked value has changed.

(new_value&amp;mask) !=(old_value&amp;mask)
new_value: current value of the message
old_value: last value of the message (initialised with the initial value of the message, updated with new_value if the new message value is not filtered out)</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="MASK" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>mask for old and new value</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Filter::MaskedNewDiffersMaskedOld -->
  <xsd:complexType name="MASKED-NEW-DIFFERS-MASKED-OLD" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Pass messages where the masked value has changed.

(new_value&amp;mask) !=(old_value&amp;mask)
new_value: current value of the message
old_value: last value of the message (initialised with the initial value of the message, updated with new_value if the new message value is not filtered out)</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:MASKED-NEW-DIFFERS-MASKED-OLD" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Filter::MaskedNewDiffersX -->
  <xsd:group name="MASKED-NEW-DIFFERS-X">
    <xsd:annotation>
      <xsd:documentation>Pass messages whose masked value is not equal to a specific value x

(new_value&amp;mask) != x
new_value: current value of the message</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="MASK" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>mask for the new Value</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="X" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Value to compare with</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Filter::MaskedNewDiffersX -->
  <xsd:complexType name="MASKED-NEW-DIFFERS-X" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Pass messages whose masked value is not equal to a specific value x

(new_value&amp;mask) != x
new_value: current value of the message</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:MASKED-NEW-DIFFERS-X" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Filter::MaskedNewEqualsMaskedOld -->
  <xsd:group name="MASKED-NEW-EQUALS-MASKED-OLD">
    <xsd:annotation>
      <xsd:documentation>Pass messages where the masked value has not changed.

(new_value&amp;mask) ==(old_value&amp;mask)
new_value: current value of the message
old_value: last value of the message (initialised with the initial value of the message, updated with new_value if the new message value is not filtered out)</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="MASK" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>mask for old and new value</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Filter::MaskedNewEqualsMaskedOld -->
  <xsd:complexType name="MASKED-NEW-EQUALS-MASKED-OLD" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Pass messages where the masked value has not changed.

(new_value&amp;mask) ==(old_value&amp;mask)
new_value: current value of the message
old_value: last value of the message (initialised with the initial value of the message, updated with new_value if the new message value is not filtered out)</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:MASKED-NEW-EQUALS-MASKED-OLD" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Filter::MaskedNewEqualsX -->
  <xsd:group name="MASKED-NEW-EQUALS-X">
    <xsd:annotation>
      <xsd:documentation>Pass messages whose masked value is equal to a specific value x

(new_value&amp;mask) == x
new_value: current value of the message</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="MASK" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>mask for the new Value</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="X" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Value to compare with</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Filter::MaskedNewEqualsX -->
  <xsd:complexType name="MASKED-NEW-EQUALS-X" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Pass messages whose masked value is equal to a specific value x

(new_value&amp;mask) == x
new_value: current value of the message</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:MASKED-NEW-EQUALS-X" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ExecutionTime::MeasuredExecutionTime -->
  <xsd:group name="MEASURED-EXECUTION-TIME">
    <xsd:annotation>
      <xsd:documentation>Specifies the ExecutionTime which has been gathered using measurement means.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="AVERAGE-EXECUTION-TIME" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Average MeasuredExecutionTime.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MAXIMAL-EXECUTION-TIME" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Maximum MeasuredExecutionTime.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MINIMAL-EXECUTION-TIME" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Minumum MeasuredExecutionTime.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ExecutionTime::MeasuredExecutionTime -->
  <xsd:complexType name="MEASURED-EXECUTION-TIME" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specifies the ExecutionTime which has been gathered using measurement means.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:EXECUTION-TIME" />
      <xsd:group ref="AR:MEASURED-EXECUTION-TIME" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class HeapUsage::MeasuredHeapUsage -->
  <xsd:group name="MEASURED-HEAP-USAGE">
    <xsd:annotation>
      <xsd:documentation>The heap usage has been measured.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="AVERAGE-MEMORY-CONSUMPTION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The average heap usage measured.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MAXIMUM-MEMORY-CONSUMPTION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The maximum heap usage measured.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MINIMUM-MEMORY-CONSUMPTION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The minimum heap usage measured.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="TEST-PATTERN" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Description of the test pattern used to aquire the measured values.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class HeapUsage::MeasuredHeapUsage -->
  <xsd:complexType name="MEASURED-HEAP-USAGE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The heap usage has been measured.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HEAP-USAGE" />
      <xsd:group ref="AR:MEASURED-HEAP-USAGE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class StackUsage::MeasuredStackUsage -->
  <xsd:group name="MEASURED-STACK-USAGE">
    <xsd:annotation>
      <xsd:documentation>The stack usage has been measured.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="AVERAGE-MEMORY-CONSUMPTION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The average stack usage measured.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MAXIMUM-MEMORY-CONSUMPTION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The maximum stack usage measured.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MINIMUM-MEMORY-CONSUMPTION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The minimum stack usage measured.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="TEST-PATTERN" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Description of the test pattern used to aquire the measured values.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class StackUsage::MeasuredStackUsage -->
  <xsd:complexType name="MEASURED-STACK-USAGE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The stack usage has been measured.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:STACK-USAGE" />
      <xsd:group ref="AR:MEASURED-STACK-USAGE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Memory::MemoryAccess -->
  <xsd:group name="MEMORY-ACCESS">
    <xsd:annotation>
      <xsd:documentation>Describes the different possible kinds of access to the memory and the time these access takes.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ACCESS-TYPE" type="AR:MEMORY-ACCESS-TYPE-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The element access type describes the different possible kinds of access to the memory.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="TIME" type="AR:TIME-RANGE" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Memory::MemoryAccess -->
  <xsd:complexType name="MEMORY-ACCESS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Describes the different possible kinds of access to the memory and the time these access takes.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:MEMORY-ACCESS" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Memory::MemoryMappedAssemblyHWConnection -->
  <xsd:group name="MEMORY-MAPPED-ASSEMBLY-HW-CONNECTION">
    <xsd:annotation>
      <xsd:documentation>This connection is used to connect Memory HWPort on the same hierarchical level (inside one HW Container).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="BASE-ADDRESS" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines the base address of the memory within the ECU template.
The same base address might be defined multiple times according to the access type and the architecture. A base address is uniquely bound to a defined memory segment.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="BYTE-ORDER" type="AR:BYTE-ORDER-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>When a PU stores data in a memory the ordering of the bytes can be done in two different ways. This storing scheme is normally fixed in the PU when more than one byte is stored in the memory. When the least significant byte is stored at the lowest address this architecture is called "mostSignificantByteLast" (aka little endian) and when the most significant byte is stored at the lowest address this is called "mostSignificantByteFirst" (aka big endian). Some CPU architectures like ARM and PowerPC can be configured to handle both little and big endian. This is called bi-endian. ByteOrder is very important when you communicate between different PUs or ECUs.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="CACHABLE" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>A memory segment may be cacheable. This has to be defined in the description of the segment connection.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="HW-CONNECTION-ACCESSS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="MEMORY-ACCESS" type="AR:MEMORY-ACCESS" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SEGMENT-USAGES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SEGMENT-USAGE" type="AR:MEMORY-SEGMENT-USAGE-ENUM" minOccurs="0" maxOccurs="unbounded">
              <xsd:annotation>
                <xsd:documentation>The segment usage is defined in the linker memory map. Usually it is fixed within an operation mode but different operations modes have different memory usage.
The element segment usage contains the following attributes. 
- Data: The attribute data is used for all kind of data: constant, variable, calibration, system initialisation, system configuration, etc. 
- Code: The attribute code is used for the program code itself. 
- Stack: Memory usable for a system or software stack is in some cases only available on limited number of segments within a PU. 
- Boot: The boot memory is used to store program and data for the start up or test of an ECU. Within the boot program the basic ECU initialisation is performed. Furthermore some system maintenance programs, like the set-up for flash programming or loading of data via communication interface, can be part of the boot program. 
Boot memory is in general not a subject of AUTOSAR SW. 
-- Boot sector: Boot sector is the location in memory, preferable Flash or ROM, where the boot program is stored. The location of the boot sector might be dependant on the PU architecture as reset and interrupt vectors must be accessible during boot. The boot sector should be separated from other user accessible Flash or implemented as ROM. In Flash the boot sector should have the appropriate array size, some few kilobyte and provide protection mechanism against unintended erasure or system manipulation.
A system may have different boot sectors, one accessible only for testing the PU during the manufacturing and configuration of the PU, in factory test mode or some initial program mode, and a user boot mode. 
-- Mapping of boot sector: Mapping of the boot sector is useful to enhance the boot sequence and the release of the used resources during the boot phase at the later user mode, e.g. the use of reset vector and interrupt vector can be improved.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Memory::MemoryMappedAssemblyHWConnection -->
  <xsd:complexType name="MEMORY-MAPPED-ASSEMBLY-HW-CONNECTION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This connection is used to connect Memory HWPort on the same hierarchical level (inside one HW Container).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-CONNECTION" />
      <xsd:group ref="AR:ASSEMBLY-HW-CONNECTION" />
      <xsd:group ref="AR:MEMORY-MAPPED-ASSEMBLY-HW-CONNECTION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Memory::MemoryMappedDelegationHWConnection -->
  <xsd:group name="MEMORY-MAPPED-DELEGATION-HW-CONNECTION">
    <xsd:annotation>
      <xsd:documentation>This connection is used to delegate a Memory HW Port to the outside of a HW Container. Typically this will used internally of a micro-controller.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Memory::MemoryMappedDelegationHWConnection -->
  <xsd:complexType name="MEMORY-MAPPED-DELEGATION-HW-CONNECTION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This connection is used to delegate a Memory HW Port to the outside of a HW Container. Typically this will used internally of a micro-controller.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-CONNECTION" />
      <xsd:group ref="AR:DELEGATION-HW-CONNECTION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Memory::MemoryMappedHWPort -->
  <xsd:group name="MEMORY-MAPPED-HW-PORT">
    <xsd:sequence>
      <xsd:element name="DATA-INTERFACE-WIDTH" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The element defines the number of bits that can be transferred from the PU to the memory device or vice versa. The width of data bus are important characteristics. All technical characteristics of the memory are covered by the access time.
Unit: Bit</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="HW-PORT-TYPE" type="AR:MEMORY-MAPPED-HW-PORT-TYPE-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>the type of port</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Memory::MemoryMappedHWPort -->
  <xsd:complexType name="MEMORY-MAPPED-HW-PORT" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-PORT" />
      <xsd:group ref="AR:MEMORY-MAPPED-HW-PORT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="MEMORY-MAPPED-HW-PORT--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="MEMORY-MAPPED-HW-PORT" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class MemorySectionUsage::MemorySection -->
  <xsd:group name="MEMORY-SECTION">
    <xsd:annotation>
      <xsd:documentation>The MemorySection provides descrition of the MemorySections used in the Implementation.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ALIGNMENT" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The alignment (typically 1, 2, 4,...)</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SECTION-NAME" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This is the name of the section in the Implementation.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SECTION-TYPE" type="AR:MEMORY-SECTION-TYPE" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Memory section type of the described MemorySection.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SIZE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The size in bytes of the section.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SW-ADDR-METHOD-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SW-ADDR-METHOD-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:SW-ADDR-METHOD--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class MemorySectionUsage::MemorySection -->
  <xsd:complexType name="MEMORY-SECTION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The MemorySection provides descrition of the MemorySections used in the Implementation.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:MEMORY-SECTION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="MEMORY-SECTION--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="MEMORY-SECTION" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class ExecutionTime::MemorySectionLocation -->
  <xsd:group name="MEMORY-SECTION-LOCATION">
    <xsd:annotation>
      <xsd:documentation>Specifes in which hardware ProvidedMemorySegment the softwareMemorySection is located.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="PROVIDED-MEMORY-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:PROVIDED-MEMORY-SEGMENT--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SOFTWARE-MEMORY-SECTION-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:MEMORY-SECTION--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ExecutionTime::MemorySectionLocation -->
  <xsd:complexType name="MEMORY-SECTION-LOCATION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specifes in which hardware ProvidedMemorySegment the softwareMemorySection is located.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:MEMORY-SECTION-LOCATION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class InlineTextModel::MixedContent1 -->
  <xsd:group name="MIXED-CONTENT-1">
    <xsd:annotation>
      <xsd:documentation>MixedContentForParagraph

This mainly represents the text model of a full blown paragraph within a documentation.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__mixed-content-1";msr.isGroupOnly="true";msr.isMaster="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- element group for class InlineTextModel::MixedContent10 -->
  <xsd:group name="MIXED-CONTENT-10">
    <xsd:annotation>
      <xsd:documentation>MixedContentForPlainText

This is the text model for plain text. It is still handled as class of its own for sake of consitency within the text model.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__mixed-content-10";msr.isGroupOnly="true";msr.isMaster="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- element group for class InlineTextModel::MixedContent2 -->
  <xsd:group name="MIXED-CONTENT-2">
    <xsd:annotation>
      <xsd:documentation>MixedContentForOverviewParagraph

This is the text model of a restricted paragraph item within a documentation. Such restricted paragraphs are used mainly for overview items, e.g. desc.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__mixed-content-2";msr.isGroupOnly="true";msr.isMaster="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- element group for class InlineTextModel::MixedContent3 -->
  <xsd:group name="MIXED-CONTENT-3">
    <xsd:annotation>
      <xsd:documentation>MixedContentForUnitNames

This is the text model for items with subscript and superscripts such as measurement unit designations. It is intended, that such models can easily be transcribed to a plain text model either by using appropriate characters or by transcribing like m^2.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__mixed-content-3";msr.isGroupOnly="true";msr.isMaster="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- element group for class InlineTextModel::MixedContent4 -->
  <xsd:group name="MIXED-CONTENT-4">
    <xsd:annotation>
      <xsd:documentation>MixedContentForLongNames

This is the model for titles and long-names. It allows some emphasis and index entries but no reference target (which is provided by the identifiable in question). It is intended that the content model can also be rendered as plain text.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__mixed-content-4";msr.isGroupOnly="true";msr.isMaster="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- element group for class InlineTextModel::MixedContent5 -->
  <xsd:group name="MIXED-CONTENT-5">
    <xsd:annotation>
      <xsd:documentation>mixedContentForVerbatim

This is the text model for preformatted (verbatim) text. It mainly consists of attributes which do not change the length on rendering.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__mixed-content-5";msr.isGroupOnly="true";msr.isMaster="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- element group for class MultilanguageData::MlData1 -->
  <xsd:group name="ML-DATA-1">
    <xsd:annotation>
      <xsd:documentation>MultiLanguageParagraph

This is the content model of a multilinugal paragraph in a documentation.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__ml-data-1"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- attribute group for class MultilanguageData::MlData1 -->
  <xsd:attributeGroup name="ML-DATA-1">
    <xsd:annotation>
      <xsd:documentation>MultiLanguageParagraph

This is the content model of a multilinugal paragraph in a documentation.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__ml-data-1"</xsd:appinfo>
    </xsd:annotation>
    <xsd:attribute name="HELP-ENTRY" type="xsd:string" />
    <xsd:attribute name="KEEP-WITH-PREVIOUS" type="xsd:string" />
  </xsd:attributeGroup>
  <!-- complex type for class MultilanguageData::MlData1 -->
  <xsd:complexType name="ML-DATA-1" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>MultiLanguageParagraph

This is the content model of a multilinugal paragraph in a documentation.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__ml-data-1"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:ML-DATA-MODEL-1" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:ML-DATA-1" />
  </xsd:complexType>
  <!-- element group for class MultilanguageData::MlData10 -->
  <xsd:group name="ML-DATA-10">
    <xsd:annotation>
      <xsd:documentation>MultiLanguagePlainText</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__ml-data-10"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class MultilanguageData::MlData10 -->
  <xsd:complexType name="ML-DATA-10" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>MultiLanguagePlainText</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__ml-data-10"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:ML-DATA-MODEL-10" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class MultilanguageData::MlData2 -->
  <xsd:group name="ML-DATA-2">
    <xsd:annotation>
      <xsd:documentation>MultiLanguageOverviewParagraph

This is the content of a multilingual paragraph in an overview item.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__ml-data-2"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class MultilanguageData::MlData2 -->
  <xsd:complexType name="ML-DATA-2" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>MultiLanguageOverviewParagraph

This is the content of a multilingual paragraph in an overview item.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__ml-data-2"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:ML-DATA-MODEL-2" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class MultilanguageData::MlData3 -->
  <xsd:group name="ML-DATA-3">
    <xsd:annotation>
      <xsd:documentation>MultiLanguageUnitNames</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__ml-data-3"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class MultilanguageData::MlData3 -->
  <xsd:complexType name="ML-DATA-3" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>MultiLanguageUnitNames</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__ml-data-3"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:ML-DATA-MODEL-3" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class MultilanguageData::MlData3p -->
  <xsd:group name="ML-DATA-3-P">
    <xsd:annotation>
      <xsd:documentation>MultiLanguageUnitNameVerbatim</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__ml-data-3p"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- attribute group for class MultilanguageData::MlData3p -->
  <xsd:attributeGroup name="ML-DATA-3-P">
    <xsd:annotation>
      <xsd:documentation>MultiLanguageUnitNameVerbatim</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__ml-data-3p"</xsd:appinfo>
    </xsd:annotation>
    <xsd:attribute name="XMLSPACE" type="xsd:string" />
  </xsd:attributeGroup>
  <!-- complex type for class MultilanguageData::MlData3p -->
  <xsd:complexType name="ML-DATA-3-P" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>MultiLanguageUnitNameVerbatim</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__ml-data-3p"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:ML-DATA-MODEL-3" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:ML-DATA-3-P" />
  </xsd:complexType>
  <!-- element group for class MultilanguageData::MlData4 -->
  <xsd:group name="ML-DATA-4">
    <xsd:annotation>
      <xsd:documentation>MultilanguageLongName</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__ml-data-4"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class MultilanguageData::MlData4 -->
  <xsd:complexType name="ML-DATA-4" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>MultilanguageLongName</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__ml-data-4"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:ML-DATA-MODEL-4" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class MultilanguageData::MlData5 -->
  <xsd:group name="ML-DATA-5">
    <xsd:annotation>
      <xsd:documentation>MultiLanguageVerbatim</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__ml-data-5"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- attribute group for class MultilanguageData::MlData5 -->
  <xsd:attributeGroup name="ML-DATA-5">
    <xsd:annotation>
      <xsd:documentation>MultiLanguageVerbatim</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__ml-data-5"</xsd:appinfo>
    </xsd:annotation>
    <xsd:attribute name="ALLOW-BREAK" type="xsd:string" />
    <xsd:attribute name="FLOAT" type="xsd:string" />
    <xsd:attribute name="HELP-ENTRY" type="xsd:string" />
    <xsd:attribute name="KEEP-WITH-PREVIOUS" type="xsd:string" />
    <xsd:attribute name="PGWIDE" type="xsd:string" />
    <xsd:attribute name="XMLSPACE" type="xsd:string" />
  </xsd:attributeGroup>
  <!-- complex type for class MultilanguageData::MlData5 -->
  <xsd:complexType name="ML-DATA-5" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>MultiLanguageVerbatim</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__ml-data-5"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:ML-DATA-MODEL-5" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:ML-DATA-5" />
  </xsd:complexType>
  <!-- element group for class LanguageDataModel::MlDataModel1 -->
  <xsd:group name="ML-DATA-MODEL-1">
    <xsd:annotation>
      <xsd:documentation>MultilanguageDataModelForParagraph</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__ml-data-model-1";msr.isMaster="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="L-1" type="AR:L-1" minOccurs="0" maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class LanguageDataModel::MlDataModel10 -->
  <xsd:group name="ML-DATA-MODEL-10">
    <xsd:annotation>
      <xsd:documentation>MultilanguageDataModelForPlainText</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__ml-data-model-10";msr.isMaster="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="L-10" type="AR:L-10" minOccurs="0" maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class LanguageDataModel::MlDataModel2 -->
  <xsd:group name="ML-DATA-MODEL-2">
    <xsd:annotation>
      <xsd:documentation>MultilanguageDataModelForOverviewParagraph</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__ml-data-model-2";msr.isMaster="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="L-2" type="AR:L-2" minOccurs="0" maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class LanguageDataModel::MlDataModel3 -->
  <xsd:group name="ML-DATA-MODEL-3">
    <xsd:annotation>
      <xsd:documentation>MultilanguageDataModelForUnitNames</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__ml-data-model-3";msr.isMaster="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="L-3" type="AR:L-3" minOccurs="0" maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class LanguageDataModel::MlDataModel4 -->
  <xsd:group name="ML-DATA-MODEL-4">
    <xsd:annotation>
      <xsd:documentation>MultilanguageDataModelForLongNames</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__ml-data-model-4";msr.isMaster="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="L-4" type="AR:L-4" minOccurs="0" maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class LanguageDataModel::MlDataModel5 -->
  <xsd:group name="ML-DATA-MODEL-5">
    <xsd:annotation>
      <xsd:documentation>MultilanguageDataModelForVerbatim</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__ml-data-model-5";msr.isMaster="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="L-5" type="AR:L-5" minOccurs="0" maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class LanguageDataModel::MlGraphic -->
  <xsd:group name="ML-GRAPHIC">
    <xsd:sequence>
      <xsd:element name="L" type="AR:L-ENUM" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class LanguageDataModel::MlGraphic -->
  <xsd:complexType name="ML-GRAPHIC" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:ML-GRAPHIC" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ModeDeclaration::ModeDeclaration -->
  <xsd:group name="MODE-DECLARATION">
    <xsd:annotation>
      <xsd:documentation>Declaration of one Mode. The name and semantics of a special mode is not defined in the metamodel.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ModeDeclaration::ModeDeclaration -->
  <xsd:complexType name="MODE-DECLARATION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Declaration of one Mode. The name and semantics of a special mode is not defined in the metamodel.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="MODE-DECLARATION--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="MODE-DECLARATION" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class ModeDeclaration::ModeDeclarationGroup -->
  <xsd:group name="MODE-DECLARATION-GROUP">
    <xsd:annotation>
      <xsd:documentation>A collection of Mode Declarations.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="INITIAL-MODE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:MODE-DECLARATION--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="MODE-DECLARATIONS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="MODE-DECLARATION" type="AR:MODE-DECLARATION" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ModeDeclaration::ModeDeclarationGroup -->
  <xsd:complexType name="MODE-DECLARATION-GROUP" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A collection of Mode Declarations.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:MODE-DECLARATION-GROUP" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="MODE-DECLARATION-GROUP--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="MODE-DECLARATION-GROUP" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class PortInterface::ModeDeclarationGroupPrototype -->
  <xsd:group name="MODE-DECLARATION-GROUP-PROTOTYPE">
    <xsd:annotation>
      <xsd:documentation>The ModeDeclarationGroupPrototype specifies the set of Modes (ModeDeclarationGroup) that is supported by a ComponentType.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="TYPE-TREF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:MODE-DECLARATION-GROUP--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class PortInterface::ModeDeclarationGroupPrototype -->
  <xsd:complexType name="MODE-DECLARATION-GROUP-PROTOTYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The ModeDeclarationGroupPrototype specifies the set of Modes (ModeDeclarationGroup) that is supported by a ComponentType.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:MODE-DECLARATION-GROUP-PROTOTYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="MODE-DECLARATION-GROUP-PROTOTYPE--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="MODE-DECLARATION-GROUP-PROTOTYPE" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class ModeDeclaration::ModeDisablingDependency -->
  <xsd:group name="MODE-DISABLING-DEPENDENCY">
    <xsd:annotation>
      <xsd:documentation>Collection of references to the Modes that disable the RTEEvent</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DEPENDENT-ON-MODE-IREFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="DEPENDENT-ON-MODE-IREF" type="AR:MODE-DISABLING-DEPENDENCY--DEPENDENT-ON-MODE-IREF" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ModeDeclaration::ModeDisablingDependency -->
  <xsd:complexType name="MODE-DISABLING-DEPENDENCY" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Collection of references to the Modes that disable the RTEEvent</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:MODE-DISABLING-DEPENDENCY" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class _instanceRef::ModeDisablingDependency_dependentOnMode -->
  <xsd:group name="MODE-DISABLING-DEPENDENCY--DEPENDENT-ON-MODE-IREF">
    <xsd:sequence>
      <xsd:element name="R-PORT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:R-PORT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="MODE-DECLARATION-GROUP-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:MODE-DECLARATION-GROUP-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="MODE-DECLARATION-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:MODE-DECLARATION--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::ModeDisablingDependency_dependentOnMode -->
  <xsd:complexType name="MODE-DISABLING-DEPENDENCY--DEPENDENT-ON-MODE-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:MODE-DISABLING-DEPENDENCY--DEPENDENT-ON-MODE-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Communication::ModeSwitchComSpec -->
  <xsd:group name="MODE-SWITCH-COM-SPEC">
    <xsd:annotation>
      <xsd:documentation>Communication attributes for both sender /server port (P-Port and sender-receiver interface).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="MODE-GROUP-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:MODE-DECLARATION-GROUP-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="MODE-SWITCHED-ACK" type="AR:MODE-SWITCHED-ACK-REQUEST" minOccurs="0" maxOccurs="1" />
      <xsd:element name="QUEUE-LENGTH" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Length of call queue on the server side. The queue is implemented by the RTE. The value must be greater or equal to 0. Setting the value of queueLength to 0 implies non-queued communication.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Communication::ModeSwitchComSpec -->
  <xsd:complexType name="MODE-SWITCH-COM-SPEC" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Communication attributes for both sender /server port (P-Port and sender-receiver interface).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:MODE-SWITCH-COM-SPEC" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class RTEEvents::ModeSwitchEvent -->
  <xsd:group name="MODE-SWITCH-EVENT">
    <xsd:annotation>
      <xsd:documentation>This event is listening to mode changes coming from the StateManager.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ACTIVATION" type="AR:MODE-ACTIVATION-KIND" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Specifies if the event is activated on entering or exiting the referenced Mode.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MODE-IREF" type="AR:MODE-SWITCH-EVENT--MODE-IREF" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class RTEEvents::ModeSwitchEvent -->
  <xsd:complexType name="MODE-SWITCH-EVENT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This event is listening to mode changes coming from the StateManager.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:RTE-EVENT" />
      <xsd:group ref="AR:MODE-SWITCH-EVENT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class _instanceRef::ModeSwitchEvent_mode -->
  <xsd:group name="MODE-SWITCH-EVENT--MODE-IREF">
    <xsd:sequence>
      <xsd:element name="R-PORT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:R-PORT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="MODE-DECLARATION-GROUP-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:MODE-DECLARATION-GROUP-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="MODE-DECLARATION-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:MODE-DECLARATION--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::ModeSwitchEvent_mode -->
  <xsd:complexType name="MODE-SWITCH-EVENT--MODE-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:MODE-SWITCH-EVENT--MODE-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ModeDeclarationGroup::ModeSwitchPoint -->
  <xsd:group name="MODE-SWITCH-POINT">
    <xsd:annotation>
      <xsd:documentation>A ModeSwitchPoint is required by a RunnableEntity owned a Mode Manager. Its semantics implies the ability to initiate a mode switch.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="MODE-GROUP-IREF" type="AR:MODE-SWITCH-POINT--MODE-GROUP-IREF" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ModeDeclarationGroup::ModeSwitchPoint -->
  <xsd:complexType name="MODE-SWITCH-POINT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A ModeSwitchPoint is required by a RunnableEntity owned a Mode Manager. Its semantics implies the ability to initiate a mode switch.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:MODE-SWITCH-POINT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="MODE-SWITCH-POINT--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="MODE-SWITCH-POINT" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class _instanceRef::ModeSwitchPoint_modeGroup -->
  <xsd:group name="MODE-SWITCH-POINT--MODE-GROUP-IREF">
    <xsd:sequence>
      <xsd:element name="P-PORT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:P-PORT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="MODE-DECLARATION-GROUP-PROTOTYPE-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:MODE-DECLARATION-GROUP-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::ModeSwitchPoint_modeGroup -->
  <xsd:complexType name="MODE-SWITCH-POINT--MODE-GROUP-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:MODE-SWITCH-POINT--MODE-GROUP-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class RTEEvents::ModeSwitchedAckEvent -->
  <xsd:group name="MODE-SWITCHED-ACK-EVENT">
    <xsd:annotation>
      <xsd:documentation>The event is raised when the referenced mode have been received or an error occurs.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="EVENT-SOURCE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:MODE-SWITCH-POINT--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class RTEEvents::ModeSwitchedAckEvent -->
  <xsd:complexType name="MODE-SWITCHED-ACK-EVENT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The event is raised when the referenced mode have been received or an error occurs.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:RTE-EVENT" />
      <xsd:group ref="AR:MODE-SWITCHED-ACK-EVENT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Communication::ModeSwitchedAckRequest -->
  <xsd:group name="MODE-SWITCHED-ACK-REQUEST">
    <xsd:annotation>
      <xsd:documentation>Requests acknowledgements that a mode switch has been proceeded successfully</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="TIMEOUT" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Number of seconds before an error is reported or in case of allowed redundancy, the value is sent again.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Communication::ModeSwitchedAckRequest -->
  <xsd:complexType name="MODE-SWITCHED-ACK-REQUEST" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Requests acknowledgements that a mode switch has been proceeded successfully</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:MODE-SWITCHED-ACK-REQUEST" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class AdminData::Modification -->
  <xsd:group name="MODIFICATION">
    <xsd:annotation>
      <xsd:documentation>Use &lt;modification&gt; to record what has changed in a document in comparison to its predecessor.</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="MODIFICATION";msr.id="type__MODIFICATION_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CHANGE" type="AR:ML-DATA-2" minOccurs="0" maxOccurs="1" />
      <xsd:element name="REASON" type="AR:ML-DATA-2" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class AdminData::Modification -->
  <xsd:complexType name="MODIFICATION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Use &lt;modification&gt; to record what has changed in a document in comparison to its predecessor.</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="MODIFICATION";msr.id="type__MODIFICATION_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:MODIFICATION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ECUCDescriptionTemplate::ModuleConfiguration -->
  <xsd:group name="MODULE-CONFIGURATION">
    <xsd:annotation>
      <xsd:documentation>Head of the configuration of one Module. A Module can be a BSW module as well as the RTE and ECU Infrastructure.

As part of tthe BSW module description, the ModuleConfiguration has two different roles:

The recommendedConfiguration contains parameter values recommended by the BSW module vendor. 

The preconfiguredConfiguration contains values for those parameters which are fixed by the implementation and cannot be changed.

These two ModuleConfigurations are used when the base ModuleConfiguration (as part of the base ECU configuration) is created to fill parameters with initial values.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DEFINITION-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:MODULE-DEF--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="IMPLEMENTATION-CONFIG-VARIANT" type="AR:CONFIGURATION-VARIANT" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Specifies the ConfigurationVariant used for this ModuleConfiguration.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MODULE-DESCRIPTION-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:BSW-IMPLEMENTATION--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="CONTAINERS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="CONTAINER" type="AR:CONTAINER" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUCDescriptionTemplate::ModuleConfiguration -->
  <xsd:complexType name="MODULE-CONFIGURATION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Head of the configuration of one Module. A Module can be a BSW module as well as the RTE and ECU Infrastructure.

As part of tthe BSW module description, the ModuleConfiguration has two different roles:

The recommendedConfiguration contains parameter values recommended by the BSW module vendor. 

The preconfiguredConfiguration contains values for those parameters which are fixed by the implementation and cannot be changed.

These two ModuleConfigurations are used when the base ModuleConfiguration (as part of the base ECU configuration) is created to fill parameters with initial values.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:MODULE-CONFIGURATION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="MODULE-CONFIGURATION--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="MODULE-CONFIGURATION" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class ECUCParameterDefTemplate::ModuleDef -->
  <xsd:group name="MODULE-DEF">
    <xsd:annotation>
      <xsd:documentation>Used as the top-level element for configuration definition for Software Modules, including BSW and RTE as well as ECU Infrastructure.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="REFINED-MODULE-DEF-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:MODULE-DEF--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SUPPORTED-CONFIG-VARIANTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SUPPORTED-CONFIG-VARIANT" type="AR:CONFIGURATION-VARIANT" minOccurs="0" maxOccurs="unbounded">
              <xsd:annotation>
                <xsd:documentation>Specifies which ConfigurationVariants are supported by this software module.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="CONTAINERS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="CHOICE-CONTAINER-DEF" type="AR:CHOICE-CONTAINER-DEF" />
            <xsd:element name="PARAM-CONF-CONTAINER-DEF" type="AR:PARAM-CONF-CONTAINER-DEF" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUCParameterDefTemplate::ModuleDef -->
  <xsd:complexType name="MODULE-DEF" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Used as the top-level element for configuration definition for Software Modules, including BSW and RTE as well as ECU Infrastructure.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PARAM-CONF-MULTIPLICITY" />
      <xsd:group ref="AR:MODULE-DEF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="MODULE-DEF--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="MODULE-DEF" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class CoreCommunication::MultiplexedIPdu -->
  <xsd:group name="MULTIPLEXED-I-PDU">
    <xsd:annotation>
      <xsd:documentation>Multiplexed PDU (i.e. NOT a COM I-PDU) aggregates one or several SignalIPdus.

In case of  multiplexing this IPdu is routed between the Pdu Multiplexer and the Interface Layer.

A multiplexer is used to define variable parts within a IPdu that may carry different signals. 
The receivers of such a IPdu can determine which signalPdus are transmitted by evaluating the selector field, which carries a unique selector code for each sub-part.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DYNAMIC-PARTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="DYNAMIC-PART" type="AR:DYNAMIC-PART" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SELECTOR-FIELD-BYTE-ORDER" type="AR:BYTE-ORDER-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This parameter defines the byte order of the selector field. 
 The byte ordering "Little Endian" (MostSignificantByteLast) and "Big Endian" (MostSignificantByteFirst) can be selected. 
The value of this attribute impacts the absolute position of the selector field into the IPdu.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SELECTOR-FIELD-LENGTH" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The size in bits of the selector field shall be configurable in a range of one bit and eight bits.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SELECTOR-FIELD-START-POSITION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This parameter is necessary to describe the position of the selector field within the IPdu.
 
It denotes the least significant bit for "Little Endian" and the most significant bit for "Big Endian" (see the description of the selectorFieldByteOrder attribute).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="STATIC-PART" type="AR:STATIC-PART" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class CoreCommunication::MultiplexedIPdu -->
  <xsd:complexType name="MULTIPLEXED-I-PDU" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Multiplexed PDU (i.e. NOT a COM I-PDU) aggregates one or several SignalIPdus.

In case of  multiplexing this IPdu is routed between the Pdu Multiplexer and the Interface Layer.

A multiplexer is used to define variable parts within a IPdu that may carry different signals. 
The receivers of such a IPdu can determine which signalPdus are transmitted by evaluating the selector field, which carries a unique selector code for each sub-part.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:I-PDU" />
      <xsd:group ref="AR:MULTIPLEXED-I-PDU" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class CoreCommunication::MultiplexedPart -->
  <xsd:group name="MULTIPLEXED-PART">
    <xsd:annotation>
      <xsd:documentation>According to the value of the selector field the dynamic part can have a different layout. For each alternative there is one COM I-Pdu that is transmitted in the dynamic part. The static part of the multiplexed I-Pdu is the same regardless of the selector field and consists of one Com I-Pdu.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="BIT-LENGTH" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Data Length in bits.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="I-PDU-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SIGNAL-I-PDU--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PDU-MULTIPLEXER-DATA-PART-BYTE-ORDER" type="AR:BYTE-ORDER-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This parameter defines the order of the bytes of the SignalIPdu and the packing into the MultiplexedIPdu. The byte ordering "Little Endian" (MostSignificantByteLast) and "Big Endian" (MostSignificantByteFirst) can be selected.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="START-POSITION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>A SignalIPdus bit position relatively to the beginning of a multiplexed IPdu.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class CoreCommunication::NPdu -->
  <xsd:group name="N-PDU">
    <xsd:annotation>
      <xsd:documentation>This is a PDU of the Transport Layer.
The main purpose of the TP Layer is to segment and reassemble I-PDUs.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class CoreCommunication::NPdu -->
  <xsd:complexType name="N-PDU" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This is a PDU of the Transport Layer.
The main purpose of the TP Layer is to segment and reassemble I-PDUs.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="N-PDU--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="N-PDU" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class Filter::Never -->
  <xsd:group name="NEVER">
    <xsd:annotation>
      <xsd:documentation>The filter removes all messages.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Filter::Never -->
  <xsd:complexType name="NEVER" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The filter removes all messages.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Filter::NewIsDifferent -->
  <xsd:group name="NEW-IS-DIFFERENT">
    <xsd:annotation>
      <xsd:documentation>Pass messages which have changed.

newValue != oldValue
new_value: current value of the message
old_value: last value of the message (initialised with the initial value of the message, updated with new_value if the new message value is not filtered out)</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Filter::NewIsDifferent -->
  <xsd:complexType name="NEW-IS-DIFFERENT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Pass messages which have changed.

newValue != oldValue
new_value: current value of the message
old_value: last value of the message (initialised with the initial value of the message, updated with new_value if the new message value is not filtered out)</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Filter::NewIsEqual -->
  <xsd:group name="NEW-IS-EQUAL">
    <xsd:annotation>
      <xsd:documentation>Pass messages which have not changed.

newValue == oldValue
new_value: current value of the message
old_value: last value of the message (initialised with the initial value of the message, updated with new_value if the new message value is not filtered out)</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Filter::NewIsEqual -->
  <xsd:complexType name="NEW-IS-EQUAL" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Pass messages which have not changed.

newValue == oldValue
new_value: current value of the message
old_value: last value of the message (initialised with the initial value of the message, updated with new_value if the new message value is not filtered out)</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Filter::NewIsGreater -->
  <xsd:group name="NEW-IS-GREATER">
    <xsd:annotation>
      <xsd:documentation>Pass a message if its value has increased.

new_value &gt; old_value
new_value: current value of the message
old_value: last value of the message (initialised with the initial value of the message, updated with new_value if the new message value is not filtered out)</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Filter::NewIsGreater -->
  <xsd:complexType name="NEW-IS-GREATER" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Pass a message if its value has increased.

new_value &gt; old_value
new_value: current value of the message
old_value: last value of the message (initialised with the initial value of the message, updated with new_value if the new message value is not filtered out)</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Filter::NewIsGreaterOrEqual -->
  <xsd:group name="NEW-IS-GREATER-OR-EQUAL">
    <xsd:annotation>
      <xsd:documentation>Pass a message if its value has not decreased.

new_value &gt;= old_value
new_value: current value of the message
old_value: last value of the message (initialised with the initial value of the message, updated with new_value if the new message value is not filtered out)</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Filter::NewIsGreaterOrEqual -->
  <xsd:complexType name="NEW-IS-GREATER-OR-EQUAL" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Pass a message if its value has not decreased.

new_value &gt;= old_value
new_value: current value of the message
old_value: last value of the message (initialised with the initial value of the message, updated with new_value if the new message value is not filtered out)</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Filter::NewIsLess -->
  <xsd:group name="NEW-IS-LESS">
    <xsd:annotation>
      <xsd:documentation>Pass a message if its value has decreased.

new_value &lt; old_value
new_value: current value of the message
old_value: last value of the message (initialised with the initial value of the message, updated with new_value if the new message value is not filtered out)</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Filter::NewIsLess -->
  <xsd:complexType name="NEW-IS-LESS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Pass a message if its value has decreased.

new_value &lt; old_value
new_value: current value of the message
old_value: last value of the message (initialised with the initial value of the message, updated with new_value if the new message value is not filtered out)</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Filter::NewIsLessOrEqual -->
  <xsd:group name="NEW-IS-LESS-OR-EQUAL">
    <xsd:annotation>
      <xsd:documentation>Pass a message if its value has not increased.

new_value &lt;= old_value
new_value: current value of the message
old_value: last value of the message (initialised with the initial value of the message, updated with new_value if the new message value is not filtered out)</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Filter::NewIsLessOrEqual -->
  <xsd:complexType name="NEW-IS-LESS-OR-EQUAL" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Pass a message if its value has not increased.

new_value &lt;= old_value
new_value: current value of the message
old_value: last value of the message (initialised with the initial value of the message, updated with new_value if the new message value is not filtered out)</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Filter::NewIsOutside -->
  <xsd:group name="NEW-IS-OUTSIDE">
    <xsd:annotation>
      <xsd:documentation>Pass a message if its value is outside a predefined boundary.

(min &gt; new_value) OR (new_value &gt; max)</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="MAX" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Value to specify the upper boundary</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MIN" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Value to specify the lower boundary</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Filter::NewIsOutside -->
  <xsd:complexType name="NEW-IS-OUTSIDE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Pass a message if its value is outside a predefined boundary.

(min &gt; new_value) OR (new_value &gt; max)</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:NEW-IS-OUTSIDE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Filter::NewIsWithin -->
  <xsd:group name="NEW-IS-WITHIN">
    <xsd:annotation>
      <xsd:documentation>Pass a message if its value is within a predefined boundary.

min &lt;= new_value &lt;= max</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="MAX" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Value to specify the upper boundary</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MIN" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Value to specify the lower boundary</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Filter::NewIsWithin -->
  <xsd:complexType name="NEW-IS-WITHIN" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Pass a message if its value is within a predefined boundary.

min &lt;= new_value &lt;= max</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:NEW-IS-WITHIN" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class CoreCommunication::NmPdu -->
  <xsd:group name="NM-PDU">
    <xsd:annotation>
      <xsd:documentation>Network Management I-Pdu</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="LENGTH" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The size of the NmPDU in bits.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="NM-CBV-POSITION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines the position of the control bit vector within the NM PDU (Bitpositon).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="NM-NID-POSITION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines the bitposition of the source node identifier within the NM PDU.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="NM-USER-DATA-LENGTH" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines the length in Bytes of the user data contained in the NM PDU.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class CoreCommunication::NmPdu -->
  <xsd:complexType name="NM-PDU" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Network Management I-Pdu</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:NM-PDU" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ServiceNeeds::NvBlockNeeds -->
  <xsd:group name="NV-BLOCK-NEEDS">
    <xsd:annotation>
      <xsd:documentation>Specifies the abstract needs on the configuration of a single Nv block.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="N-DATA-SETS" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>number of data sets to be provided by the NVRAM manager for this block</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="READONLY" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>true: data of this block are write protected for normal operation (but protection can be disabled)
false: no restriction</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="RELIABILITY" type="AR:NV-BLOCK-NEEDS-RELIABILITY-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Reliability against data loss on the non-volatile medium.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="RESISTANT-TO-CHANGED-SW" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines whether an Nv block shall be treated resistant to configuration changes (true) or not (false). For details how to handle initialization in the latter case, refer to the NVRAM specification.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="RESTORE-AT-START" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines whether the associated RAM mirror block shall be implictly restored during startup by the basic SW or not. Only relevant if a RAM mirror block (PerInstanceMemory) is associated with this port.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="WRITE-ONLY-ONCE" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines write protection after first write:
true: This block is prevented from being changed/erased or being replaced with the default ROM data after first initialization by the SWC.
false: No such restriction.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="WRITING-FREQUENCY" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Provides the amount of updates to this block from the application point of view. It has to be provided in "number of write access per year".</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="WRITING-PRIORITY" type="AR:NV-BLOCK-NEEDS-WRITING-PRIORITY-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Requires the priority of writing this block in case of concurrent requests to write other blocks.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ServiceNeeds::NvBlockNeeds -->
  <xsd:complexType name="NV-BLOCK-NEEDS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specifies the abstract needs on the configuration of a single Nv block.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:NV-BLOCK-NEEDS" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Filter::OneEveryN -->
  <xsd:group name="ONE-EVERY-N">
    <xsd:annotation>
      <xsd:documentation>Pass a message once every N message occurrences.
Algorithm: occurrence % period == offset
Start: occurrence = 0.
Each time the message is received or transmitted, occurrence is incremented by 1 after filtering.
Length of occurrence is 8 bit (minimum).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="OFFSET" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>specifies the initial number of messages to occur before the first message is passed</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PERIOD" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>specifies number of messages to occur before the message is passed again</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Filter::OneEveryN -->
  <xsd:complexType name="ONE-EVERY-N" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Pass a message once every N message occurrences.
Algorithm: occurrence % period == offset
Start: occurrence = 0.
Each time the message is received or transmitted, occurrence is incremented by 1 after filtering.
Length of occurrence is 8 bit (minimum).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:ONE-EVERY-N" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Constants::OpaqueLiteral -->
  <xsd:group name="OPAQUE-LITERAL">
    <xsd:annotation>
      <xsd:documentation>An opaque literal.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="VALUE" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The string encodes an array of bytes in the following syntax "ae:05:fe"</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Constants::OpaqueLiteral -->
  <xsd:complexType name="OPAQUE-LITERAL" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>An opaque literal.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:DATA-PROTOTYPE" />
      <xsd:group ref="AR:OPAQUE-LITERAL" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Datatypes::OpaqueType -->
  <xsd:group name="OPAQUE-TYPE">
    <xsd:annotation>
      <xsd:documentation>This Datatype represents an array of exactly numberOfBits bits.  It is called "opaque" because this array of bits should be transported "as is" by the AUTOSAR RTE.</xsd:documentation>
      <xsd:appinfo source="tags">java.instanceClass="java.lang.String"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="NUMBER-OF-BITS" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The number of bits that are used to make up the opaque type.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Datatypes::OpaqueType -->
  <xsd:complexType name="OPAQUE-TYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This Datatype represents an array of exactly numberOfBits bits.  It is called "opaque" because this array of bits should be transported "as is" by the AUTOSAR RTE.</xsd:documentation>
      <xsd:appinfo source="tags">java.instanceClass="java.lang.String"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PRIMITIVE-TYPE" />
      <xsd:group ref="AR:OPAQUE-TYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class RTEEvents::OperationInvokedEvent -->
  <xsd:group name="OPERATION-INVOKED-EVENT">
    <xsd:annotation>
      <xsd:documentation>The OperationInvokedEvent references the OperationPrototype invoked by the client.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="OPERATION-IREF" type="AR:OPERATION-INVOKED-EVENT--OPERATION-IREF" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class RTEEvents::OperationInvokedEvent -->
  <xsd:complexType name="OPERATION-INVOKED-EVENT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The OperationInvokedEvent references the OperationPrototype invoked by the client.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:RTE-EVENT" />
      <xsd:group ref="AR:OPERATION-INVOKED-EVENT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class _instanceRef::OperationInvokedEvent_operation -->
  <xsd:group name="OPERATION-INVOKED-EVENT--OPERATION-IREF">
    <xsd:sequence>
      <xsd:element name="P-PORT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:P-PORT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="OPERATION-PROTOTYPE-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:OPERATION-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::OperationInvokedEvent_operation -->
  <xsd:complexType name="OPERATION-INVOKED-EVENT--OPERATION-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:OPERATION-INVOKED-EVENT--OPERATION-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class PortInterface::OperationPrototype -->
  <xsd:group name="OPERATION-PROTOTYPE">
    <xsd:annotation>
      <xsd:documentation>An operation declared within the scope of a client/server interface.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ARGUMENTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="ARGUMENT-PROTOTYPE" type="AR:ARGUMENT-PROTOTYPE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="POSSIBLE-ERROR-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="POSSIBLE-ERROR-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:APPLICATION-ERROR--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class PortInterface::OperationPrototype -->
  <xsd:complexType name="OPERATION-PROTOTYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>An operation declared within the scope of a client/server interface.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:OPERATION-PROTOTYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="OPERATION-PROTOTYPE--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="OPERATION-PROTOTYPE" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class ECUElectronics::Oscillator -->
  <xsd:group name="OSCILLATOR">
    <xsd:annotation>
      <xsd:documentation>The basic source for time in the ECU. Based on the oscillator the PU clock is generated, but also the communication and other peripherals need timing information (ADC, PWM, timer).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ADJUSTIBLE" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines if the oscillator is adjustable from software.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="BACKUP-OSCILLATOR" type="AR:OSCILLATOR" minOccurs="0" maxOccurs="1" />
      <xsd:element name="OSCILLATOR-FREQUENCY-RANGE" type="AR:FREQUENCY-RANGE" minOccurs="0" maxOccurs="1" />
      <xsd:element name="OSCILLATOR-JITTER" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The short-term deviation of the nominal frequency to the real frequency. Jitter is influenced by the circuitry itself, voltage spikes etc. Jitter is critical for communication elements.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="OSCILLATOR-MODE" type="AR:OSCILLATOR-MODE-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Crystals and other oscillating elements have more than one resonant frequencies, which are usually odd harmonics to the basic, fundamental frequencies. For Automotive a basic requirement should be to use only fundamental mode only. Using overtone modes there is a risk, that the oscillator circuitry starts at the fundamental mode after a error in the start up routine. In order to reach an overtone mode the frequency of the fundamental mode, or lower overtones has to be passed during start up. There is a risk that the oscillator locks to this, lower frequency. Therefore Fundamental modes oscillatorts are not so critical for this issue. Fundamental quartz/crystals can reach up to 40 MHz today, above this frequency all quartz/crystals are running in the 3rd, 5th or higher overtone mode.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="OSCILLATOR-STARTUP-TIME" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The time the oscillator needs to deliver a stable and valid signal.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="OSCILLATOR-TOLERANCE" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The long-term deviation of the nominal frequency to the real frequency. Influenced by manufacturing, layout, temperature, external components and voltage. Tolerances are critical for timer application and time synchronisation.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUElectronics::Oscillator -->
  <xsd:complexType name="OSCILLATOR" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The basic source for time in the ECU. Based on the oscillator the PU clock is generated, but also the communication and other peripherals need timing information (ADC, PWM, timer).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-ELEMENT" />
      <xsd:group ref="AR:ECU-ELECTRONICS" />
      <xsd:group ref="AR:OSCILLATOR" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="OSCILLATOR--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="OSCILLATOR" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class Communication::PPortComSpec -->
  <xsd:group name="P-PORT-COM-SPEC">
    <xsd:annotation>
      <xsd:documentation>Communication attributes for P-Ports. This class will contain attributes that are valid for all kinds of provide ports, independent of client-server or sender-receiver communication patterns.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- element group for class Components::PPortPrototype -->
  <xsd:group name="P-PORT-PROTOTYPE">
    <xsd:annotation>
      <xsd:documentation>Component port providing a certain port interface.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="PROVIDED-COM-SPECS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="MODE-SWITCH-COM-SPEC" type="AR:MODE-SWITCH-COM-SPEC" />
            <xsd:element name="QUEUED-SENDER-COM-SPEC" type="AR:QUEUED-SENDER-COM-SPEC" />
            <xsd:element name="SERVER-COM-SPEC" type="AR:SERVER-COM-SPEC" />
            <xsd:element name="UNQUEUED-SENDER-COM-SPEC" type="AR:UNQUEUED-SENDER-COM-SPEC" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PROVIDED-INTERFACE-TREF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:PORT-INTERFACE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Components::PPortPrototype -->
  <xsd:complexType name="P-PORT-PROTOTYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Component port providing a certain port interface.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PORT-PROTOTYPE" />
      <xsd:group ref="AR:P-PORT-PROTOTYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="P-PORT-PROTOTYPE--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="P-PORT-PROTOTYPE" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class Peripherals::PWD -->
  <xsd:group name="PWD">
    <xsd:annotation>
      <xsd:documentation>Pulse Width Demodulation is the inverse method of PWM. Here the processing unit is trying to gather information about a signal. A PWD can detect rising and falling edges and call the software in order to calculate the pulse width. When a PWD have more than one input signal the frequency and phase between the signals can be obtained.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="MODE" type="AR:PWD-MODE-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>A Pulse Width Demodulation peripheral can be configured to decode a two phase or a three phase input signals.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PHASE-DETECTION" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Some timers have the possibility to detect signals from a quadrature rotating switch. There are two outputs signal from such a switch; the signals are 90 degrees phase shifted from each other. The rotation of the switch can then automatically be detected by a special function in a timer.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Peripherals::PWD -->
  <xsd:complexType name="PWD" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Pulse Width Demodulation is the inverse method of PWM. Here the processing unit is trying to gather information about a signal. A PWD can detect rising and falling edges and call the software in order to calculate the pulse width. When a PWD have more than one input signal the frequency and phase between the signals can be obtained.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-ELEMENT" />
      <xsd:group ref="AR:PERIPHERAL" />
      <xsd:group ref="AR:PULSE-WIDTH-PERIPHERAL" />
      <xsd:group ref="AR:PWD" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Peripherals::PWM -->
  <xsd:group name="PWM">
    <xsd:annotation>
      <xsd:documentation>Pulse Width Modulation refers to a method of carrying information on a train of pulses, the information being encoded in the width of the pulses. The frequency is normally not changed. It's only relationship between the high and low level of the signal which are changed. A PWM interface is usually a part of a processing unit. It provides the capability to communicate with another system with an easy protocol.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Peripherals::PWM -->
  <xsd:complexType name="PWM" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Pulse Width Modulation refers to a method of carrying information on a train of pulses, the information being encoded in the width of the pulses. The frequency is normally not changed. It's only relationship between the high and low level of the signal which are changed. A PWM interface is usually a part of a processing unit. It provides the capability to communicate with another system with an easy protocol.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-ELEMENT" />
      <xsd:group ref="AR:PERIPHERAL" />
      <xsd:group ref="AR:PULSE-WIDTH-PERIPHERAL" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Identifiable::PackageableElement -->
  <xsd:group name="PACKAGEABLE-ELEMENT">
    <xsd:sequence />
  </xsd:group>
  <!-- element group for class ECUCParameterDefTemplate::ParamConfContainerDef -->
  <xsd:group name="PARAM-CONF-CONTAINER-DEF">
    <xsd:annotation>
      <xsd:documentation>Used to define configuration containers that can hierarchically contain other containers and/or parameter definitions.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="MULTIPLE-CONFIGURATION-CONTAINER" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Specifies whether this container is used to define multiple configuration sets. Only one container in the whole ModuleDef shall have this enabled.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PARAMETERS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="BOOLEAN-PARAM-DEF" type="AR:BOOLEAN-PARAM-DEF" />
            <xsd:element name="DERIVED-BOOLEAN-PARAM-DEF" type="AR:DERIVED-BOOLEAN-PARAM-DEF" />
            <xsd:element name="DERIVED-ENUMERATION-PARAM-DEF" type="AR:DERIVED-ENUMERATION-PARAM-DEF" />
            <xsd:element name="DERIVED-FLOAT-PARAM-DEF" type="AR:DERIVED-FLOAT-PARAM-DEF" />
            <xsd:element name="DERIVED-INTEGER-PARAM-DEF" type="AR:DERIVED-INTEGER-PARAM-DEF" />
            <xsd:element name="DERIVED-STRING-PARAM-DEF" type="AR:DERIVED-STRING-PARAM-DEF" />
            <xsd:element name="ENUMERATION-PARAM-DEF" type="AR:ENUMERATION-PARAM-DEF" />
            <xsd:element name="FLOAT-PARAM-DEF" type="AR:FLOAT-PARAM-DEF" />
            <xsd:element name="FUNCTION-NAME-DEF" type="AR:FUNCTION-NAME-DEF" />
            <xsd:element name="INTEGER-PARAM-DEF" type="AR:INTEGER-PARAM-DEF" />
            <xsd:element name="LINKER-SYMBOL-DEF" type="AR:LINKER-SYMBOL-DEF" />
            <xsd:element name="STRING-PARAM-DEF" type="AR:STRING-PARAM-DEF" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="REFERENCES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="CHOICE-REFERENCE-PARAM-DEF" type="AR:CHOICE-REFERENCE-PARAM-DEF" />
            <xsd:element name="FOREIGN-REFERENCE-PARAM-DEF" type="AR:FOREIGN-REFERENCE-PARAM-DEF" />
            <xsd:element name="INSTANCE-REFERENCE-PARAM-DEF" type="AR:INSTANCE-REFERENCE-PARAM-DEF" />
            <xsd:element name="REFERENCE-PARAM-DEF" type="AR:REFERENCE-PARAM-DEF" />
            <xsd:element name="SYMBOLIC-NAME-REFERENCE-PARAM-DEF" type="AR:SYMBOLIC-NAME-REFERENCE-PARAM-DEF" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SUB-CONTAINERS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="CHOICE-CONTAINER-DEF" type="AR:CHOICE-CONTAINER-DEF" />
            <xsd:element name="PARAM-CONF-CONTAINER-DEF" type="AR:PARAM-CONF-CONTAINER-DEF" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUCParameterDefTemplate::ParamConfContainerDef -->
  <xsd:complexType name="PARAM-CONF-CONTAINER-DEF" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Used to define configuration containers that can hierarchically contain other containers and/or parameter definitions.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PARAM-CONF-MULTIPLICITY" />
      <xsd:group ref="AR:CONTAINER-DEF" />
      <xsd:group ref="AR:PARAM-CONF-CONTAINER-DEF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="PARAM-CONF-CONTAINER-DEF--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="PARAM-CONF-CONTAINER-DEF" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class ECUCParameterDefTemplate::ParamConfMultiplicity -->
  <xsd:group name="PARAM-CONF-MULTIPLICITY">
    <xsd:annotation>
      <xsd:documentation>Common class used to express multiplicities in the definition of configuration parameters, references and containers.
If not stated otherwise the default multiplicity is exactly one mandatory occurrence of the specified element.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="LOWER-MULTIPLICITY" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The lower multiplicity of the specified element.
0: optional
1: at least one occurence
n: at least n occurrences</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="UPPER-MULTIPLICITY" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The upper multiplicity of the specified element.
1: at most one occurrence
m: at most m occurrences
*: arbitrary number of occurrences</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class ECUCDescriptionTemplate::ParameterValue -->
  <xsd:group name="PARAMETER-VALUE">
    <xsd:annotation>
      <xsd:documentation>Common class to all types of configuration values</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DEFINITION-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:CONFIG-PARAMETER--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class CoreCommunication::Pdu -->
  <xsd:group name="PDU">
    <xsd:annotation>
      <xsd:documentation>An IPdu, NmPdu or NPdu (XOR).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <xsd:simpleType name="PDU--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="DCM-I-PDU" />
      <xsd:enumeration value="I-PDU" />
      <xsd:enumeration value="MULTIPLEXED-I-PDU" />
      <xsd:enumeration value="N-PDU" />
      <xsd:enumeration value="NM-PDU" />
      <xsd:enumeration value="PDU" />
      <xsd:enumeration value="SIGNAL-I-PDU" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class Fibex4Multiplatform::PduMappingDefaultValue -->
  <xsd:group name="PDU-MAPPING-DEFAULT-VALUE">
    <xsd:annotation>
      <xsd:documentation>Default Value which will be distributed if no I-Pdu has been received since last sending.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DEFAULT-VALUE-ELEMENTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="DEFAULT-VALUE-ELEMENT" type="AR:DEFAULT-VALUE-ELEMENT" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Fibex4Multiplatform::PduMappingDefaultValue -->
  <xsd:complexType name="PDU-MAPPING-DEFAULT-VALUE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Default Value which will be distributed if no I-Pdu has been received since last sending.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:PDU-MAPPING-DEFAULT-VALUE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class CoreCommunication::PduToFrameMapping -->
  <xsd:group name="PDU-TO-FRAME-MAPPING">
    <xsd:annotation>
      <xsd:documentation>A PduToFrameMapping defines the composition of Pdus in each frame. 

Depending on its relation to entities such channels and clusters it can be unambiguously deduced whether a fan-out is handled by the Pdu router or the Bus Interface.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="PACKING-BYTE-ORDER" type="AR:BYTE-ORDER-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This parameter defines the order of the bytes of the Pdu and the packing into the Frame. The byte ordering "Little Endian" (MostSignificantByteLast) and "Big Endian" (MostSignificantByteFirst) can be selected. 
The value of this attribute impacts the absolute position of the Pdu into the Frame (see the startPosition attribute description).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PDU-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:PDU--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="START-POSITION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This parameter is necessary to describe the bitposition of a Pdu within a Frame. It denotes the least significant bit for "Little Endian" and the most significant bit for "Big Endian" packed Pdu within the Frame (see the description of the packingByteOrder attribute).

Bits within the Frame are counted as follows (see the OSEK COM v3.0.3 specification) :
      Bit 0 corresponds to Byte 0 Bit 0
      Bit 1 corresponds to Byte 0 Bit 1
      .....
      Bit 8 corresponds to Byte 1 Bit 0
      etc.

Please note that the way the bytes will be actually sent on the bus does not impact this representation: they will always be seen by the software as a byte array. 
Note also that the absolute position of the Pdu in the Frame is then determined by the definition of the packingByteOrder attribute of the signal.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="UPDATE-INDICATION-BIT-POSITION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Indication to the receivers that the corresponding I-Pdu was updated by the sender. 
This attribute describes the position of the update bit in the frame that aggregates this PDUToFrameMapping. Length is always one bit.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class CoreCommunication::PduToFrameMapping -->
  <xsd:complexType name="PDU-TO-FRAME-MAPPING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A PduToFrameMapping defines the composition of Pdus in each frame. 

Depending on its relation to entities such channels and clusters it can be unambiguously deduced whether a fan-out is handled by the Pdu router or the Bus Interface.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PDU-TO-FRAME-MAPPING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class PerInstanceMemory::PerInstanceMemory -->
  <xsd:group name="PER-INSTANCE-MEMORY">
    <xsd:annotation>
      <xsd:documentation>Defines a memory-block that needs to be available for each instance of the SW-component.  This is typically only useful if supportsMultipleInstantiation is TRUE of if the component defines NVRAM access via permanent blocks.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="TYPE" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The "C"-type</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="TYPE-DEFINITION" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>A definition of the type</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class PerInstanceMemory::PerInstanceMemory -->
  <xsd:complexType name="PER-INSTANCE-MEMORY" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Defines a memory-block that needs to be available for each instance of the SW-component.  This is typically only useful if supportsMultipleInstantiation is TRUE of if the component defines NVRAM access via permanent blocks.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PER-INSTANCE-MEMORY" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="PER-INSTANCE-MEMORY--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="PER-INSTANCE-MEMORY" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class SwcImplementation::PerInstanceMemorySize -->
  <xsd:group name="PER-INSTANCE-MEMORY-SIZE">
    <xsd:annotation>
      <xsd:documentation>Resources needed by the allocation of PerInstanceMemory for each SWC instance. Note that these resources are not covered by an ObjectFileSection, because they are supposed to be allocated by the RTE.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ALIGNMENT" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Required alignment (1,2,4,...) of the referenced PerInstanceMemory</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PER-INSTANCE-MEMORY-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:PER-INSTANCE-MEMORY--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SIZE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Size (in bytes) of the reference perInstanceMemory</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SwcImplementation::PerInstanceMemorySize -->
  <xsd:complexType name="PER-INSTANCE-MEMORY-SIZE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Resources needed by the allocation of PerInstanceMemory for each SWC instance. Note that these resources are not covered by an ObjectFileSection, because they are supposed to be allocated by the RTE.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:PER-INSTANCE-MEMORY-SIZE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Peripherals::Peripheral -->
  <xsd:group name="PERIPHERAL">
    <xsd:annotation>
      <xsd:documentation>General Element for all peripherals.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CAN-BE-DISABLED" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines if the peripheral can be logically enabled or disabled.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Peripherals::Peripheral -->
  <xsd:complexType name="PERIPHERAL" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>General Element for all peripherals.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-ELEMENT" />
      <xsd:group ref="AR:PERIPHERAL" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Peripherals::PeripheralHWPort -->
  <xsd:group name="PERIPHERAL-HW-PORT">
    <xsd:annotation>
      <xsd:documentation>This port is directed from the peripheral to the ecu electronics and communication.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="BUFFERS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="BUFFER" type="AR:BUFFER" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="INVERSION" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>An input or output can sometimes be programmed to invert the level of a signal.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="POWER-ON-CAPABILITY" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The peripheral device has the feature to issue a Power On event to the ECU.
Example: Some CAN bus transceivers have a dedicated low power voltage regulator and a feature, which allows to turn on the main voltage regulator of the ECU by detecting a bus activity.
Example: A wired-or connection of a termination KL30 and KL15 can fulfil this requirement.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="WAKE-UP-CAPABILITY" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The peripheral device has the feature to issue a wake-up event to the processing unit.
Example: HW Port with Key-Wake-Up on a PU is still active while the PU is in stop mode and only partially supplied with power. The Key-Wake-Up reacts on any changes at the input of the HW Port with the activation of the power supply, the activation of the clock system and later the resuming of the software, which has to process the input of the HW Port.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Peripherals::PeripheralHWPort -->
  <xsd:complexType name="PERIPHERAL-HW-PORT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This port is directed from the peripheral to the ecu electronics and communication.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-PORT" />
      <xsd:group ref="AR:PERIPHERAL-HW-PORT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class SignalPaths::PermissibleSignalPath -->
  <xsd:group name="PERMISSIBLE-SIGNAL-PATH">
    <xsd:annotation>
      <xsd:documentation>The PermissibleSignalPath describes the way a data element shall take in the topology. The path is described by ordered references to PhysicalChannels. 

If more than one PermissibleSignalPath is defined for the same
signal/operation attributes, any of them can be chosen. Such a signal path can be a constraint for the communication matrix . This path describes that one data element should take path A (e.g. 1. Can channel, 2. Lin channel) 
and not path B (1. Can channel, FlexRay channel A). 

This has an effect on the frame generation and the frame path.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="OPERATIONS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SWC-TO-SWC-OPERATION-ARGUMENTS" type="AR:SWC-TO-SWC-OPERATION-ARGUMENTS" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PHYSICAL-CHANNEL-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="PHYSICAL-CHANNEL-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:PHYSICAL-CHANNEL--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SIGNALS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SWC-TO-SWC-SIGNAL" type="AR:SWC-TO-SWC-SIGNAL" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SignalPaths::PermissibleSignalPath -->
  <xsd:complexType name="PERMISSIBLE-SIGNAL-PATH" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The PermissibleSignalPath describes the way a data element shall take in the topology. The path is described by ordered references to PhysicalChannels. 

If more than one PermissibleSignalPath is defined for the same
signal/operation attributes, any of them can be chosen. Such a signal path can be a constraint for the communication matrix . This path describes that one data element should take path A (e.g. 1. Can channel, 2. Lin channel) 
and not path B (1. Can channel, FlexRay channel A). 

This has an effect on the frame generation and the frame path.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:PERMISSIBLE-SIGNAL-PATH" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class GlobalConstraints::PhysConstrs -->
  <xsd:group name="PHYS-CONSTRS">
    <xsd:sequence>
      <xsd:element name="LOWER-LIMIT" type="AR:LIMIT" minOccurs="0" maxOccurs="1" />
      <xsd:element name="UPPER-LIMIT" type="AR:LIMIT" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class GlobalConstraints::PhysConstrs -->
  <xsd:complexType name="PHYS-CONSTRS" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:PHYS-CONSTRS" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class CoreTopology::PhysicalChannel -->
  <xsd:group name="PHYSICAL-CHANNEL">
    <xsd:annotation>
      <xsd:documentation>A physical channel is the transmission medium that is used to send and receive information between two communicating ECUs. Each CommunicationCluster has at least one physical channel. Bus systems like CAN and LIN only have exactly one PhysicalChannel. A FlexRay cluster may have more than one PhysicalChannels that may be used in parallel for redundant communication.

An ECU is part of a cluster if it contains at least one controller that is connected to at least one channel of the cluster.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="FRAME-TRIGGERINGSS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="CAN-FRAME-TRIGGERING" type="AR:CAN-FRAME-TRIGGERING" />
            <xsd:element name="FLEXRAY-FRAME-TRIGGERING" type="AR:FLEXRAY-FRAME-TRIGGERING" />
            <xsd:element name="LIN-FRAME-TRIGGERING" type="AR:LIN-FRAME-TRIGGERING" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="I-PDU-TRIGGERINGS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="I-PDU-TRIGGERING" type="AR:I-PDU-TRIGGERING" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="I-SIGNAL-TRIGGERINGS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="I-SIGNAL-TRIGGERING" type="AR:I-SIGNAL-TRIGGERING" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="TP-CHANNELS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="CAN-TP-CONNECTION-CHANNEL" type="AR:CAN-TP-CONNECTION-CHANNEL" />
            <xsd:element name="FLEX-RAY-TP-CHANNEL" type="AR:FLEX-RAY-TP-CHANNEL" />
            <xsd:element name="LIN-TP-CHANNEL" type="AR:LIN-TP-CHANNEL" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class CoreTopology::PhysicalChannel -->
  <xsd:complexType name="PHYSICAL-CHANNEL" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A physical channel is the transmission medium that is used to send and receive information between two communicating ECUs. Each CommunicationCluster has at least one physical channel. Bus systems like CAN and LIN only have exactly one PhysicalChannel. A FlexRay cluster may have more than one PhysicalChannels that may be used in parallel for redundant communication.

An ECU is part of a cluster if it contains at least one controller that is connected to at least one channel of the cluster.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PHYSICAL-CHANNEL" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="PHYSICAL-CHANNEL--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="FLEXRAY-PHYSICAL-CHANNEL" />
      <xsd:enumeration value="PHYSICAL-CHANNEL" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class Units::PhysicalDimension -->
  <xsd:group name="PHYSICAL-DIMENSION">
    <xsd:annotation>
      <xsd:documentation>This class represents a physical dimension.
If the physical dimension of two units is identical a conversion between them is possible. The conversion between units is related to the definition of the physical dimension.</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="PHYSICAL-DIMENSION";asam.useCase="MDX";msr.id="type__PHYSICAL-DIMENSION_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="LENGTH-EXP" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The exponent of the physical dimension "length"</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="PHYSICAL-DIMENSION_TYPE__LENGTH-EXP";msr.tbdString="true";xml.sequenceOffset="20"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MASS-EXP" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The exponent of the physical dimension "mass"</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="PHYSICAL-DIMENSION_TYPE__MASS-EXP";msr.tbdString="true";xml.sequenceOffset="30"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="TIME-EXP" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The exponent of the physical dimension "time"</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="PHYSICAL-DIMENSION_TYPE__TIME-EXP";msr.tbdString="true";xml.sequenceOffset="40"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="CURRENT-EXP" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>the exponent of the physical dimension "electric current"</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="PHYSICAL-DIMENSION_TYPE__CURRENT-EXP";msr.tbdString="true";xml.sequenceOffset="50"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="TEMPERATURE-EXP" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The exponent of the physical dimension "temperature"</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="PHYSICAL-DIMENSION_TYPE__TEMPERATURE-EXP";msr.tbdString="true";xml.sequenceOffset="60"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MOLAR-AMOUNT-EXP" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The exponent of the physical dimension "quantity of substance"</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="PHYSICAL-DIMENSION_TYPE__MOLAR-AMOUNT-EXP";msr.tbdString="true";xml.sequenceOffset="70"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="LUMINOUS-INTENSITY-EXP" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The exponent of the physical dimension "luminous intensity"</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="PHYSICAL-DIMENSION_TYPE__LUMINOUS-INTENSITY-EXP";msr.tbdString="true";xml.sequenceOffset="80"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Units::PhysicalDimension -->
  <xsd:complexType name="PHYSICAL-DIMENSION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This class represents a physical dimension.
If the physical dimension of two units is identical a conversion between them is possible. The conversion between units is related to the definition of the physical dimension.</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="PHYSICAL-DIMENSION";asam.useCase="MDX";msr.id="type__PHYSICAL-DIMENSION_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PHYSICAL-DIMENSION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="PHYSICAL-DIMENSION--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="PHYSICAL-DIMENSION" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class ECUResourceTemplate::PinHWConnection -->
  <xsd:group name="PIN-HW-CONNECTION">
    <xsd:annotation>
      <xsd:documentation>Is used to connect the HWPins of the HWPorts that are referenced by the HWConnection.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CONNECTED-PIN-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="2">
            <xsd:element name="CONNECTED-PIN-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:HW-PIN--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUResourceTemplate::PinHWConnection -->
  <xsd:complexType name="PIN-HW-CONNECTION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Is used to connect the HWPins of the HWPorts that are referenced by the HWConnection.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:PIN-HW-CONNECTION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class PortAPIOptions::PortAPIOption -->
  <xsd:group name="PORT-API-OPTION">
    <xsd:annotation>
      <xsd:documentation>Options how to generate the signatures of calls for an AtomicSoftwareComponentType in order to communicate over a PortPrototype (for calls into a RunnableEntity as well as for calls from a RunnableEntity to the PortPrototype).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ENABLE-TAKE-ADDRESS" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>If set to true, the software-component is able to use the API reference for deriving a pointer to an object.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="INDIRECT-API" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>true: Specifies an "indirect API" to be generated for the associated port, which means that the SWC is able to access the actions on a port via a pointer to an object representing a port. This allows e.g. iterating over ports in a loop. This option has no effect for PPorts of client/server interfaces.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PORT-ARG-VALUES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="BOOLEAN-LITERAL" type="AR:BOOLEAN-LITERAL" />
            <xsd:element name="CHAR-LITERAL" type="AR:CHAR-LITERAL" />
            <xsd:element name="INTEGER-LITERAL" type="AR:INTEGER-LITERAL" />
            <xsd:element name="OPAQUE-LITERAL" type="AR:OPAQUE-LITERAL" />
            <xsd:element name="REAL-LITERAL" type="AR:REAL-LITERAL" />
            <xsd:element name="STRING-LITERAL" type="AR:STRING-LITERAL" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PORT-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:PORT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class PortAPIOptions::PortAPIOption -->
  <xsd:complexType name="PORT-API-OPTION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Options how to generate the signatures of calls for an AtomicSoftwareComponentType in order to communicate over a PortPrototype (for calls into a RunnableEntity as well as for calls from a RunnableEntity to the PortPrototype).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:PORT-API-OPTION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class PortInterface::PortInterface -->
  <xsd:group name="PORT-INTERFACE">
    <xsd:annotation>
      <xsd:documentation>Abstract base class for an interface that is either provided or required by a port of a  software component.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="IS-SERVICE" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This flag is set, if the PortInterface is to be used for communication between an ApplicationSoftwareComponentType and a ServiceComponentType (namely an AUTOSAR Service, ECU abstraction or Complex Driver) located on the same ECU. Otherwise the flag is not set.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:simpleType name="PORT-INTERFACE--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="CALPRM-INTERFACE" />
      <xsd:enumeration value="CLIENT-SERVER-INTERFACE" />
      <xsd:enumeration value="PORT-INTERFACE" />
      <xsd:enumeration value="SENDER-RECEIVER-INTERFACE" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class Components::PortPrototype -->
  <xsd:group name="PORT-PROTOTYPE">
    <xsd:annotation>
      <xsd:documentation>Base class for the ports of an AUTOSAR software component.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CALIBRATION-PORT-ANNOTATIONS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="CALIBRATION-PORT-ANNOTATION" type="AR:CALIBRATION-PORT-ANNOTATION" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="DELEGATED-PORT-ANNOTATION" type="AR:DELEGATED-PORT-ANNOTATION" minOccurs="0" maxOccurs="1" />
      <xsd:element name="IO-HW-ABSTRACTION-SERVER-ANNOTATIONS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="IO-HW-ABSTRACTION-SERVER-ANNOTATION" type="AR:IO-HW-ABSTRACTION-SERVER-ANNOTATION" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SENDER-RECEIVER-ANNOTATIONS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="RECEIVER-ANNOTATION" type="AR:RECEIVER-ANNOTATION" />
            <xsd:element name="SENDER-ANNOTATION" type="AR:SENDER-ANNOTATION" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:simpleType name="PORT-PROTOTYPE--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="P-PORT-PROTOTYPE" />
      <xsd:enumeration value="PORT-PROTOTYPE" />
      <xsd:enumeration value="R-PORT-PROTOTYPE" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class ECUElectronics::PowerDriverHWElement -->
  <xsd:group name="POWER-DRIVER-HW-ELEMENT">
    <xsd:annotation>
      <xsd:documentation>Power Driver HW Element describes a group of electronic devices, which perform signal transformations with hardware devices. The main focus of the ECU Resource Template is the logical description of these elements, necessary for the system generation and relevant for the SW development.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CURRENT-LIMITATION" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The device limits the maximum current conduction. The limit has to be specified. If this element does not occur the HW Element does not provide current limitation.
Unit: Ampere</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="DEFAULT-RESET-BEHAVIUOR" type="AR:HW-ELEMENT-DEFAULT-RESET-BEHAVIOR-ENUM" minOccurs="0" maxOccurs="1" />
      <xsd:element name="NOTIFICATION" type="AR:POWER-DRIVER-NOTIFICATION" minOccurs="0" maxOccurs="1" />
      <xsd:element name="ON-STATE-RESISTANCE" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The resistance in ON state can be used together with the current through this element to determine the static thermal power dissipation of the element itself and the ECU completely by summing up each element with power dissipation.
As the heating up of an power element follows with an exponential delay, the ratio of on and off times is later needed in the system generation process.
This information can give the first hint on critical issues of thermal design, but does not replace a complete static and dynamic verification of the thermal layout.
Unit: Ohm</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="POWER-DRIVER-TYPE" type="AR:HW-ELEMENT-POWER-DRIVER-TYPE-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines the general type of the element. Type is a most common naming for an element. Several sets of types exist. Type is mandatory for the usage of the ECU Resource Template.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PROTECTION" type="AR:POWER-DRIVER-PROTECTION" minOccurs="0" maxOccurs="1" />
      <xsd:element name="RESET-ON-FAULT-BEHAVIOUR" type="AR:HW-ELEMENT-RESET-ON-FAULT-BEHAVIOUR-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Describe the way the element is reactivated after a self protection sequence was entered</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUElectronics::PowerDriverHWElement -->
  <xsd:complexType name="POWER-DRIVER-HW-ELEMENT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Power Driver HW Element describes a group of electronic devices, which perform signal transformations with hardware devices. The main focus of the ECU Resource Template is the logical description of these elements, necessary for the system generation and relevant for the SW development.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-ELEMENT" />
      <xsd:group ref="AR:ECU-ELECTRONICS" />
      <xsd:group ref="AR:POWER-DRIVER-HW-ELEMENT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUElectronics::PowerDriverHWPort -->
  <xsd:group name="POWER-DRIVER-HW-PORT">
    <xsd:annotation>
      <xsd:documentation>Define the option of a Power Driver that the output of a Power Driver can be superposed by a PWM signal asserted by a HW Element e.g. a microprocessor. 
In most cases, the PWM signal is connected by a separate wire, even when the general control information are transmitted by a bus.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="PWM-MAX-FREQUENCY" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>It defines the upper limit at which the device can fulfil the PWM capability.
EMC and power dissipation are increasing almost exponential with the PWM frequency. Choosing PWM frequencies be aware that some effects can cause secondary effects, which can create a audible noise for the user, e.g. a PWM dimmed lamp can be noticed by the driver.
Unit: Hz</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PWM-MIN-OFF-TIME" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines the characteristic, that a Power Driver has to be off at least a minimum time in order to assure the function.
Unit: s</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PWM-MIN-ON-TIME" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines the characteristic, that a Power Driver has to be on at least a minimum time in order to assure the function.
Unit: s</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUElectronics::PowerDriverHWPort -->
  <xsd:complexType name="POWER-DRIVER-HW-PORT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Define the option of a Power Driver that the output of a Power Driver can be superposed by a PWM signal asserted by a HW Element e.g. a microprocessor. 
In most cases, the PWM signal is connected by a separate wire, even when the general control information are transmitted by a bus.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-PORT" />
      <xsd:group ref="AR:POWER-DRIVER-HW-PORT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUElectronics::PowerDriverNotification -->
  <xsd:group name="POWER-DRIVER-NOTIFICATION">
    <xsd:annotation>
      <xsd:documentation>Describe the status which cause a notification to the controlling devices of an ECU, e.g. to the PU.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ISSUED-INTERRUPT-SOURCE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:INTERRUPT-PRODUCE-HW-PORT--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="LOSS-OF-GROUND" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The device detected a loss of ground situation. The device was forced off, in order to avoid damages by excessive currents.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MAX-CURRENT" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The device detected a too high current.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MAX-VOLTAGE" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The device detected a too high supply voltage.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MIN-CURRENT" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The device detected a too low curent.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MIN-VOLTAGE" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The device detected a too low supply voltage.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="OPEN-LOAD" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The device detected open loads. This situation is reported to the controlling portion of an ECU, e.g. to the PU.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="OVER-TEMPERATURE" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The maximum allowed temperature was detected in the device. A protecting hardware has forced the device off.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SHORT-LOAD" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The device was forced off, in order to avoid damages by excessive currents.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SHORT-TO-BATT" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The device detected a short to battery situation. The device was forced off, in order to avoid damages by excessive currents.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SHORT-TO-GROUND" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The device detected a short to ground situation. The device was forced off, in order to avoid damages by excessive currents.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUElectronics::PowerDriverNotification -->
  <xsd:complexType name="POWER-DRIVER-NOTIFICATION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Describe the status which cause a notification to the controlling devices of an ECU, e.g. to the PU.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:POWER-DRIVER-NOTIFICATION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ECUElectronics::PowerDriverProtection -->
  <xsd:group name="POWER-DRIVER-PROTECTION">
    <xsd:annotation>
      <xsd:documentation>The Power Driver HW Element / ASIC turns off by internal means in order to protect the device against severe damages.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="LOSS-OF-GROUND-PROTECTION" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Is protected against loss of ground.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MAX-CURRENT-PROTECTION" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Maximal current limits are exceeded.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MAX-VOLTAGE-PROTECTION" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Maximal voltage limits are exceeded.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MIN-CURRENT-PROTECTION" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Minimal current limits are exceeded.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MIN-VOLTAGE-PROTECTION" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Minimal voltage limits are exceeded.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="OVER-TEMPERATURE-PROTECTION" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Is protected against over-temperature.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="REVERSE-BATTERY-PROTECTION" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Is protected against reverse battery voltage.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUElectronics::PowerDriverProtection -->
  <xsd:complexType name="POWER-DRIVER-PROTECTION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The Power Driver HW Element / ASIC turns off by internal means in order to protect the device against severe damages.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:POWER-DRIVER-PROTECTION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ECUElectronics::PowerSupplyCurrentNotification -->
  <xsd:group name="POWER-SUPPLY-CURRENT-NOTIFICATION">
    <xsd:sequence>
      <xsd:element name="HYSTERESIS" type="xsd:double" minOccurs="0" maxOccurs="1" />
      <xsd:element name="INTERRUPT-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="INTERRUPT-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:INTERRUPT-PRODUCE-HW-PORT--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="LEVEL" type="xsd:double" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUElectronics::PowerSupplyCurrentNotification -->
  <xsd:complexType name="POWER-SUPPLY-CURRENT-NOTIFICATION" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:POWER-SUPPLY-CURRENT-NOTIFICATION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ECUElectronics::PowerSupplyHWElement -->
  <xsd:group name="POWER-SUPPLY-HW-ELEMENT">
    <xsd:annotation>
      <xsd:documentation>The Power Supply HW Element provides information about the power source of the ECU. There can be multiple power supplies within one ECU.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="BACKUP-CAPACITY" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Define the capability assigned to the output of the Power Supply HW Element to maintain the output voltage stable for a certain time after the undervoltage status information is asserted.
In the ECU Resource Template the Backup Capacity is described as time. The time is dependent from the current consumed by the HW Elements connected to the according output, the SW-functions controlling the ECU hardware and the implementation of the Power Supply HW Element itself. The time has to be calculated from the available capacitors or measured in the application.
Example: For the energy storage for airbag applications capacitors stores energy for the airbag ignition for several seconds even the battery is completely disconnected.
Example: A combined step up/step down DC/DC converter can deliver a stable 5V volt output even when the input has already dropped to 3V. The undervoltage status is already set at a Vbatt level of 6V.
Unit: Ah</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="DEFAULT-VOLTAGE-ON-RESET" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This value defines the nominal output voltage, which is supplied as default after a reset occured. This attribute is only applicable at power supplies with a programmable output voltage.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MAX-VOLTAGE" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The maximum voltage that can be supplied.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MIN-VOLTAGE" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The minimum voltage that can be supplied.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="NOTIFICATION-OVER-TEMPERATURE" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Status information that the on-chip temperature on the Power Supply Hardware Element exceed the maximal, defined limit.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="NOTIFICATION-RESET" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The power on reset is generated depending on the output voltage. Valid operation of the ECU and the connected HW Elements are only possible if the output voltage is stable and within the specified output voltage range. Therefore most of the Power Supply HW Elements contain a circuitry, which generate a output signal which indicates an instable or unspecified voltage at the output. Some Power Supply HW Elements offer the possibility to adjust the reset thresholds.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="OVER-CURRENT-NOTIFICATION" type="AR:POWER-SUPPLY-CURRENT-NOTIFICATION" minOccurs="0" maxOccurs="1" />
      <xsd:element name="OVER-VOLTAGE-NOTIFICATION" type="AR:POWER-SUPPLY-VOLTAGE-NOTIFICATION" minOccurs="0" maxOccurs="1" />
      <xsd:element name="RESET-DELAY" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The reset signal at the power-on reset is delayed by the Power Supply HW Element in order to enable the different ECU HW Elements to enter a stable and defined operation state when the reset signal is released.
Unit: s</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="RESET-ON-FAULT-BEHAVIOUR" type="AR:HW-ELEMENT-RESET-ON-FAULT-BEHAVIOUR-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Describe the way the element is reactivated after a self protection sequence was entered</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="UNDER-VOLTAGE-NOTIFICATION" type="AR:POWER-SUPPLY-VOLTAGE-NOTIFICATION" minOccurs="0" maxOccurs="1" />
      <xsd:element name="WAKEUP-CAPABILITY" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Describes the feature of the power supply to turn on the output voltage by an external event. In some cases this feature is coupled with other ECU internal HW elements e.g. transceivers and is the main feature used by the car specific power management. Different to other HW elements with this feature the power supply is the receiver of the signal, as more ECU function is only possible if the power supply is activated. Example: Philips CAN Transceivers have an output called INH, which allow together with some Voltage regulators with wake up capability to wake up the ECU at the presence of a CAN bus telegram. 
Example: The Wake up Capability is connected to the terminal KL15 (ignition), the ECU is waked up at the presence of KL15.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUElectronics::PowerSupplyHWElement -->
  <xsd:complexType name="POWER-SUPPLY-HW-ELEMENT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The Power Supply HW Element provides information about the power source of the ECU. There can be multiple power supplies within one ECU.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-ELEMENT" />
      <xsd:group ref="AR:ECU-ELECTRONICS" />
      <xsd:group ref="AR:POWER-SUPPLY-HW-ELEMENT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUElectronics::PowerSupplyHWPort -->
  <xsd:group name="POWER-SUPPLY-HW-PORT">
    <xsd:annotation>
      <xsd:documentation>The Power Supply HW Port is used to model the power distribution within the ECU. If the direction is "in" the port is used to describe the power consumption of an HW Element. If the direction is "out" the port is used to describe a power source. The HW Connection between these two HW Ports can only be established between the Power Supply HW Port of the HW Element with direction "out" and a Power Supply HW Port of the Power Supply HW Element with direction "in".</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CAN-BE-SWITCHED-OFF" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines if the Power Supply HW Port can be switched off and therefore the supplied HW Element is switched off as well. This feature allows to describe which parts of an ECU are able be disconnected from their power supply based on software interaction. 
If the Power Supply HW Port has the direction 'in' the supplied HW Element can be switched off. 
If the Power Supply HW Port has the direction 'out' the power supply can be switched off and therefore all supplied HW Elements are switched off as well (This is used to describe groups of HW Elements that can only be switched off together). 
When however the whole ECU is disconnected from power the switchable power supply is of course not valid anymore.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SUPPLIED" type="AR:ELECTRICAL-RANGE" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUElectronics::PowerSupplyHWPort -->
  <xsd:complexType name="POWER-SUPPLY-HW-PORT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The Power Supply HW Port is used to model the power distribution within the ECU. If the direction is "in" the port is used to describe the power consumption of an HW Element. If the direction is "out" the port is used to describe a power source. The HW Connection between these two HW Ports can only be established between the Power Supply HW Port of the HW Element with direction "out" and a Power Supply HW Port of the Power Supply HW Element with direction "in".</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-PORT" />
      <xsd:group ref="AR:POWER-SUPPLY-HW-PORT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUElectronics::PowerSupplyVoltageNotification -->
  <xsd:group name="POWER-SUPPLY-VOLTAGE-NOTIFICATION">
    <xsd:sequence>
      <xsd:element name="HYSTERESES" type="xsd:double" minOccurs="0" maxOccurs="1" />
      <xsd:element name="INTERRUPT-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="INTERRUPT-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:INTERRUPT-PRODUCE-HW-PORT--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="LEVEL" type="xsd:double" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUElectronics::PowerSupplyVoltageNotification -->
  <xsd:complexType name="POWER-SUPPLY-VOLTAGE-NOTIFICATION" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:POWER-SUPPLY-VOLTAGE-NOTIFICATION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Constants::PrimitiveSpecification -->
  <xsd:group name="PRIMITIVE-SPECIFICATION">
    <xsd:annotation>
      <xsd:documentation>A constant of a primitive datatype.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- element group for class Datatypes::PrimitiveType -->
  <xsd:group name="PRIMITIVE-TYPE">
    <xsd:annotation>
      <xsd:documentation>A primitive datatype consists of a set of allowed values.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-DATA-DEF-PROPS" type="AR:SW-DATA-DEF-PROPS" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <xsd:simpleType name="PRIMITIVE-TYPE--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="BOOLEAN-TYPE" />
      <xsd:enumeration value="CHAR-TYPE" />
      <xsd:enumeration value="INTEGER-TYPE" />
      <xsd:enumeration value="OPAQUE-TYPE" />
      <xsd:enumeration value="PRIMITIVE-TYPE" />
      <xsd:enumeration value="REAL-TYPE" />
      <xsd:enumeration value="STRING-TYPE" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class ProcessingUnit::ProcessingUnit -->
  <xsd:group name="PROCESSING-UNIT">
    <xsd:annotation>
      <xsd:documentation>A ProcessingUnit describes the plain processor core. The identifier provides the actual type name of the processing unit.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ADDRESSING-MODESS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="ADDRESSING-MODES" type="AR:PROCESSING-UNIT-ADRESSING-MODE-ENUM" minOccurs="0" maxOccurs="unbounded">
              <xsd:annotation>
                <xsd:documentation>The addressing modes describe the options to access the data from the memory.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="ARCHITECTURE-KIND" type="AR:PROCESSING-UNIT-ARCHITECTURE-KIND-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The kind of architecture</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="ARCHITECTURE-NAME" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The name of the architecture (e.g. ARM, MIPS, PowerPC).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="ARCHITECTURE-TYPE" type="AR:PROCESSING-UNIT-ARCHITECTURE-TYPE-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The architecture type take influence to the performance index of a PU, but are not necessarily a main topic of software development, as some of the aspects are transparent  to the user as the are handled with in the compiler. The last two types are slightly different as they require a detailed planning during system design, how the data must be prepared in order to use the features of an SIMD or MIMD very efficiently. Application like video processing use in general this features by their data format, as every pixel information is formed by the three basic colours and intensity, thus each pixel is represented by four different values, which have to be processed simultaneously.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="BOOT-TIME" type="AR:BOOT-TIME" minOccurs="0" maxOccurs="1" />
      <xsd:element name="DMA-CHANNEL-COUNT" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Direct Memory Access is a mechanism for off-loading a PU and having transfer directly between memory and peripherals without involving the PU. 
In most common PU the DMA mechanism is implemented with a specialised cell (DMA unit) that transfers data between a peripheral device and memory, independent of the processor. The DMA controller becomes the bus master and directs the reads or writes between itself and memory. A typical DMA transfer can be described in three steps:
1. The PU sets up the DMA transfer by supplying the identity of the periphery module, the operation to perform on that device, the memory address that is the source or the destination of the data to be transferred, and the number of bytes to transfer. 
2. The DMA starts the operation on the periphery device and arbitrates for the bus. When the data is available, from the periphery device or memory, it transfers the data. The DMA unit supplies the memory address and initiates the next transfer. With this technique, a DMA unit can complete an entire transfer, which may be Kbytes of data, without bothering the PU. Many DMA units contain some memory to allow them to deal flexibly with delays either in transfer or those incurred while waiting to become bus master. 
3. Once the DMA transfer is complete, the DMA unit interrupts the processor, which can then determine by interrogating the DMA unit or examining memory whether the entire operation completed successfully. 
During an active DMA transfer the PU cannot access the involved resources concurrently.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="IMPLEMENTATION-TECHNOLOGY" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Name of the technology used to implement this PU.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MAX-INTERRUPT-NESTING-LEVELS" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines how many interrupts are allowed to be activated at one time. This entry is mainly defined by the size of the according stack as the data saving mechanism during interrupts and the data passing mechanism during function calls use the stack.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MPU" type="AR:MPU" minOccurs="0" maxOccurs="1" />
      <xsd:element name="NATURAL-DATA-SIZE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The natural data size prvides information which data manipulations are optimized on this PU. The natural data size is typically the Data Register size. The PU is optimised for this data size.
Typical natural data size is one of following (in bits): 8, 16, 32, 64, other (12, 20, 80)</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="OPCODE-SIZE" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The attribute describes the typical length of the opcodes. In CISC machines the opcode size is variable due to the opcode itself. In RISC machines the opcode is by definition limited to a defined size.
Type definition is used if the PU has more than one opcode set is incorporated. E.g. at the ARM architecture there is the ARM opcode set (size of 32 bit) and the Thumb opcode set (size of 16 bit).
Code compression is a technology where the opcodes are stored in a compressed form and are automatically decompressed before execution.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PU-CLOCK" type="AR:CLOCK" minOccurs="0" maxOccurs="1" />
      <xsd:element name="REGISTER-MODELS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="REGISTER" type="AR:REGISTER" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SPECIAL-OPCODESS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SPECIAL-OPCODES" type="AR:PROCESSING-UNIT-SPECIAL-OPCODES-ENUM" minOccurs="0" maxOccurs="unbounded">
              <xsd:annotation>
                <xsd:documentation>The following attributes are opcodes, which are not supported by all PUs. The support of this opcodes has an influence on the performance of the PU.
- Bit-manipulation
- Multiplication
- Division
- Multiply Accumulate
- Floating-point Support
In the future further opcodes may be possible.

The special opcodes  take important influence to the performance index of a PU, but are not main topic of the software development, as far as high level programming languages are used, due to the fact that these are covered by compiler settings, compiler strategies and software libraries where the direct usage or a SW emulation is available for almost any general use case. For some of these opcodes the main advantage is available only at the level of assembler programming or compiler optimization.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SUPPORTED-DATA-TYPES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SUPPORTED-DATA-TYPE" type="AR:SUPPORTED-DATA-TYPE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ProcessingUnit::ProcessingUnit -->
  <xsd:complexType name="PROCESSING-UNIT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A ProcessingUnit describes the plain processor core. The identifier provides the actual type name of the processing unit.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-ELEMENT" />
      <xsd:group ref="AR:PROCESSING-UNIT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="PROCESSING-UNIT--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="PROCESSING-UNIT" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class ComputationMethod::ProgCode -->
  <xsd:group name="PROG-CODE">
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ComputationMethod::ProgCode -->
  <xsd:complexType name="PROG-CODE" abstract="false" mixed="false">
    <xsd:sequence />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Memory::ProvidedMemorySegment -->
  <xsd:group name="PROVIDED-MEMORY-SEGMENT">
    <xsd:annotation>
      <xsd:documentation>Describes one volatile memory segment.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ALIGNMENT" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Some memory architectures are organised for bigger natural data size than accessed by the PU. In this case memory might not be used completely and some memory locations are left blank due to misalignment. The overall memory size is not used by code or data.
Misalignment may be recovered by special mechanisms provided by hardware or software. In this case the access time will be increased. Certain PU architectures do not allow misalignment in code or data generally.
Unit: Byte</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="ARCHITECTURAL-QUALITY" type="AR:ERROR-DETECTION-CORRECTION" minOccurs="0" maxOccurs="1" />
      <xsd:element name="MANUFACTURING-QUALITY" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>As memory holds the executable program as well as the according data, memory needs a level of quality and reliability according to the purpose of the ECU. In most applications today memory is the biggest homogeneous hardware block; therefore quality and reliability of memory have the biggest impact on ECU performance and availability.
With the introduction of non-volatile memory and the use of huge DRAM memories the aspect of quality and reliability gains more importance.
Despite all Zero-defect programs of the semiconductor suppliers a defect rate in the range of 1 to 5 ppm must be considered as given even for critical applications.
Separate quality data for Endurance and Data retention can be available also. The biggest value for ppm rates is used as a quality factor.
Unit: ppm</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SEGMENT-SIZE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>A value that determines the amount of bytes within the memory segment.
An ECU for AUTOSAR always contains at least one memory segment.
Within a single ECU different memory types and access types can be used simultaneously.
An ECU may consist of different parts that carry one or more memories.
Segment size is defined in the terms of Bytes. 
The overall amount of memory is the sum of all available memory segments. For different types of memory only the sum of the same type gives a useful overall sum.
Unit: Byte</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SEPARATE" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Separate memories are required for safety-relevant functions and redundancy requirements.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Memory::ProvidedMemorySegment -->
  <xsd:complexType name="PROVIDED-MEMORY-SEGMENT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Describes one volatile memory segment.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-ELEMENT" />
      <xsd:group ref="AR:PROVIDED-MEMORY-SEGMENT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="PROVIDED-MEMORY-SEGMENT--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="PROVIDED-MEMORY-SEGMENT" />
      <xsd:enumeration value="PROVIDED-NV-MEMORY-SEGMENT" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class Memory::ProvidedNVMemorySegment -->
  <xsd:group name="PROVIDED-NV-MEMORY-SEGMENT">
    <xsd:annotation>
      <xsd:documentation>Describes one non-volatile memory segment.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DATA-ENDURANCE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Program and erase cycles are a stress to the memory cell, therefore endurance is characterised by the number of erase/program cycles the memory can survive exceeding the prescribed failure rate.
Unit: No of cycles.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="DATA-RETENTION" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Data retention time is the time between programming a sample of non-volatile memory and the observation of a prescribed failure rate when verifying the programmed pattern. The time is dependent on the chosen technology for the integrated memory cell.
Unit: Years</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MARGIN-READ-AVAILABLE" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Additional to verify, all data are read back with a different set-up of the threshold of the sense amplifier of the programmed cell. With this method besides the logical correctness, the sufficient amount of electrical charges, which represents the stored data is checked. Furthermore the content of the memory and the correctness and the quality of the programming tools can be verified. Performing the margin read allow the prediction of the data retention. The feature of margin read is a characteristic of a memory, which is not available at all devices. Margin read is available for flash technology only.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SEGMENT-SIZE-ERASE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>For an erasable memory it's usually the same size of the segment as for the segment size which can be erased at a time. If the size of an erasable segment is different shall the size of the erasable segment be entered in the table.
Unit: Byte</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SEGMENT-SIZE-WRITE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Some memory types have not the same segment size as in the case when data is written to the memory. For example, a specific flash memory you must write 128 bytes once even if the segment size is 16 kBytes.
Unit: Byte</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Memory::ProvidedNVMemorySegment -->
  <xsd:complexType name="PROVIDED-NV-MEMORY-SEGMENT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Describes one non-volatile memory segment.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-ELEMENT" />
      <xsd:group ref="AR:PROVIDED-MEMORY-SEGMENT" />
      <xsd:group ref="AR:PROVIDED-NV-MEMORY-SEGMENT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Peripherals::PulseWidthPeripheral -->
  <xsd:group name="PULSE-WIDTH-PERIPHERAL">
    <xsd:annotation>
      <xsd:documentation>Common elements for PWM, PWD and CCU.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="RESOLUTION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines the data width of the counter.
Unit: Bits</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class Communication::QueuedReceiverComSpec -->
  <xsd:group name="QUEUED-RECEIVER-COM-SPEC">
    <xsd:annotation>
      <xsd:documentation>Communication attributes specific to queued receiving.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="QUEUE-LENGTH" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Length of queue for received events.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Communication::QueuedReceiverComSpec -->
  <xsd:complexType name="QUEUED-RECEIVER-COM-SPEC" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Communication attributes specific to queued receiving.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:RECEIVER-COM-SPEC" />
      <xsd:group ref="AR:QUEUED-RECEIVER-COM-SPEC" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Communication::QueuedSenderComSpec -->
  <xsd:group name="QUEUED-SENDER-COM-SPEC">
    <xsd:annotation>
      <xsd:documentation>Communication attributes specific to distribution of  events (P-Port, sender-receiver interface and data element carries an "event").</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Communication::QueuedSenderComSpec -->
  <xsd:complexType name="QUEUED-SENDER-COM-SPEC" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Communication attributes specific to distribution of  events (P-Port, sender-receiver interface and data element carries an "event").</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SENDER-COM-SPEC" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Communication::RPortComSpec -->
  <xsd:group name="R-PORT-COM-SPEC">
    <xsd:annotation>
      <xsd:documentation>Communication attributes of an R-Port. This class will contain attributes that are valid for all kinds of require-ports, independent of client-server or sender-receiver communication patterns.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- element group for class Components::RPortPrototype -->
  <xsd:group name="R-PORT-PROTOTYPE">
    <xsd:annotation>
      <xsd:documentation>Component port requiring a certain port interface.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="REQUIRED-COM-SPECS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="CLIENT-COM-SPEC" type="AR:CLIENT-COM-SPEC" />
            <xsd:element name="QUEUED-RECEIVER-COM-SPEC" type="AR:QUEUED-RECEIVER-COM-SPEC" />
            <xsd:element name="UNQUEUED-RECEIVER-COM-SPEC" type="AR:UNQUEUED-RECEIVER-COM-SPEC" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="REQUIRED-INTERFACE-TREF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:PORT-INTERFACE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Components::RPortPrototype -->
  <xsd:complexType name="R-PORT-PROTOTYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Component port requiring a certain port interface.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PORT-PROTOTYPE" />
      <xsd:group ref="AR:R-PORT-PROTOTYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="R-PORT-PROTOTYPE--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="R-PORT-PROTOTYPE" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class RTEEvents::RTEEvent -->
  <xsd:group name="RTE-EVENT">
    <xsd:annotation>
      <xsd:documentation>Abstract base class for all RTE-related events</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="MODE-DEPENDENCY" type="AR:MODE-DISABLING-DEPENDENCY" minOccurs="0" maxOccurs="1" />
      <xsd:element name="START-ON-EVENT-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:RUNNABLE-ENTITY--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:simpleType name="RTE-EVENT--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="ASYNCHRONOUS-SERVER-CALL-RETURNS-EVENT" />
      <xsd:enumeration value="DATA-RECEIVE-ERROR-EVENT" />
      <xsd:enumeration value="DATA-RECEIVED-EVENT" />
      <xsd:enumeration value="DATA-SEND-COMPLETED-EVENT" />
      <xsd:enumeration value="MODE-SWITCH-EVENT" />
      <xsd:enumeration value="MODE-SWITCHED-ACK-EVENT" />
      <xsd:enumeration value="OPERATION-INVOKED-EVENT" />
      <xsd:enumeration value="RTE-EVENT" />
      <xsd:enumeration value="TIMING-EVENT" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class Datatypes::Range -->
  <xsd:group name="RANGE">
    <xsd:annotation>
      <xsd:documentation>Abstract class for specifying a range from lower limit to upper limit.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="LOWER-LIMIT" type="AR:AR-LIMIT" minOccurs="0" maxOccurs="1" />
      <xsd:element name="UPPER-LIMIT" type="AR:AR-LIMIT" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class Constants::RealLiteral -->
  <xsd:group name="REAL-LITERAL">
    <xsd:annotation>
      <xsd:documentation>Constant description for real values.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="VALUE" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The numeric value itself.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Constants::RealLiteral -->
  <xsd:complexType name="REAL-LITERAL" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Constant description for real values.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:DATA-PROTOTYPE" />
      <xsd:group ref="AR:REAL-LITERAL" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Datatypes::RealType -->
  <xsd:group name="REAL-TYPE">
    <xsd:annotation>
      <xsd:documentation>This represents a range of reals that can be represented by either the IEEE 754 "Single Precision" (encoding is "Single") or IEEE 754 "Double Precision" (encoding is "Double") arithmetic.
Note that these standards include representations for +infinity, -infinity, QNaN and SNaN.  When defining a RealType, one must indicate whether these special values are allowed or not.</xsd:documentation>
      <xsd:appinfo source="tags">java.instanceClass="java.lang.Float"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ALLOW-NAN" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Denotes whether this data type permits for "not a number" being represented by the type</xsd:documentation>
          <xsd:appinfo source="tags">xml.name="ALLOW-NAN"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="ENCODING" type="AR:REAL-TYPE-ENCODING-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Denotes the precision of the RealType</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Datatypes::RealType -->
  <xsd:complexType name="REAL-TYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This represents a range of reals that can be represented by either the IEEE 754 "Single Precision" (encoding is "Single") or IEEE 754 "Double Precision" (encoding is "Double") arithmetic.
Note that these standards include representations for +infinity, -infinity, QNaN and SNaN.  When defining a RealType, one must indicate whether these special values are allowed or not.</xsd:documentation>
      <xsd:appinfo source="tags">java.instanceClass="java.lang.Float"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PRIMITIVE-TYPE" />
      <xsd:group ref="AR:RANGE" />
      <xsd:group ref="AR:REAL-TYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ApplicationAttributes::ReceiverAnnotation -->
  <xsd:group name="RECEIVER-ANNOTATION">
    <xsd:annotation>
      <xsd:documentation>Annotation of a receiver port, specifying properties of data elements that don't affect communication or generation of the RTE. The given attributes are requirements on the required data.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SIGNAL-AGE" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The maximum allowed age of the signal since it was originally read by a sensor. This is a requirement specified on the receiver side.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ApplicationAttributes::ReceiverAnnotation -->
  <xsd:complexType name="RECEIVER-ANNOTATION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Annotation of a receiver port, specifying properties of data elements that don't affect communication or generation of the RTE. The given attributes are requirements on the required data.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:GENERAL-ANNOTATION" />
      <xsd:group ref="AR:SENDER-RECEIVER-ANNOTATION" />
      <xsd:group ref="AR:RECEIVER-ANNOTATION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Communication::ReceiverComSpec -->
  <xsd:group name="RECEIVER-COM-SPEC">
    <xsd:annotation>
      <xsd:documentation>Receiver specific communication attributes (R-Port and sender-receiver interface).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DATA-ELEMENT-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:DATA-ELEMENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="FILTER" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="1">
            <xsd:element name="ALWAYS" type="AR:ALWAYS" />
            <xsd:element name="MASKED-NEW-DIFFERS-MASKED-OLD" type="AR:MASKED-NEW-DIFFERS-MASKED-OLD" />
            <xsd:element name="MASKED-NEW-DIFFERS-X" type="AR:MASKED-NEW-DIFFERS-X" />
            <xsd:element name="MASKED-NEW-EQUALS-MASKED-OLD" type="AR:MASKED-NEW-EQUALS-MASKED-OLD" />
            <xsd:element name="MASKED-NEW-EQUALS-X" type="AR:MASKED-NEW-EQUALS-X" />
            <xsd:element name="NEVER" type="AR:NEVER" />
            <xsd:element name="NEW-IS-DIFFERENT" type="AR:NEW-IS-DIFFERENT" />
            <xsd:element name="NEW-IS-EQUAL" type="AR:NEW-IS-EQUAL" />
            <xsd:element name="NEW-IS-GREATER" type="AR:NEW-IS-GREATER" />
            <xsd:element name="NEW-IS-GREATER-OR-EQUAL" type="AR:NEW-IS-GREATER-OR-EQUAL" />
            <xsd:element name="NEW-IS-LESS" type="AR:NEW-IS-LESS" />
            <xsd:element name="NEW-IS-LESS-OR-EQUAL" type="AR:NEW-IS-LESS-OR-EQUAL" />
            <xsd:element name="NEW-IS-OUTSIDE" type="AR:NEW-IS-OUTSIDE" />
            <xsd:element name="NEW-IS-WITHIN" type="AR:NEW-IS-WITHIN" />
            <xsd:element name="ONE-EVERY-N" type="AR:ONE-EVERY-N" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class Datatypes::RecordElement -->
  <xsd:group name="RECORD-ELEMENT">
    <xsd:annotation>
      <xsd:documentation>An element in a record.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Datatypes::RecordElement -->
  <xsd:complexType name="RECORD-ELEMENT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>An element in a record.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:DATA-PROTOTYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="RECORD-ELEMENT--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="RECORD-ELEMENT" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class MeasurementProperty::RecordElementRef -->
  <xsd:group name="RECORD-ELEMENT-REF">
    <xsd:sequence>
      <xsd:element name="RECORD-ELEMENT-IREF" type="AR:RECORD-ELEMENT-REF--RECORD-ELEMENT-IREF" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class MeasurementProperty::RecordElementRef -->
  <xsd:complexType name="RECORD-ELEMENT-REF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:RECORD-ELEMENT-REF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class _instanceRef::RecordElementRef_RecordElement -->
  <xsd:group name="RECORD-ELEMENT-REF--RECORD-ELEMENT-IREF">
    <xsd:sequence>
      <xsd:element name="COMPONENT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMPONENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="ASSEMBLY-CONNECTOR-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:ASSEMBLY-CONNECTOR-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="COMPOSITION-COMPONENT-PROTOTYPE-REF" minOccurs="0" maxOccurs="unbounded">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMPONENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PORT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:PORT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="DATA-ELEMENT-PROTOTYPE-REF" minOccurs="0" maxOccurs="unbounded">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:DATA-ELEMENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="RECORD-ELEMENT-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:RECORD-ELEMENT--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::RecordElementRef_RecordElement -->
  <xsd:complexType name="RECORD-ELEMENT-REF--RECORD-ELEMENT-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:RECORD-ELEMENT-REF--RECORD-ELEMENT-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Constants::RecordSpecification -->
  <xsd:group name="RECORD-SPECIFICATION">
    <xsd:sequence>
      <xsd:element name="ELEMENTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="ARRAY-SPECIFICATION" type="AR:ARRAY-SPECIFICATION" />
            <xsd:element name="BOOLEAN-LITERAL" type="AR:BOOLEAN-LITERAL" />
            <xsd:element name="CHAR-LITERAL" type="AR:CHAR-LITERAL" />
            <xsd:element name="CONSTANT-REFERENCE" type="AR:CONSTANT-REFERENCE" />
            <xsd:element name="INTEGER-LITERAL" type="AR:INTEGER-LITERAL" />
            <xsd:element name="OPAQUE-LITERAL" type="AR:OPAQUE-LITERAL" />
            <xsd:element name="REAL-LITERAL" type="AR:REAL-LITERAL" />
            <xsd:element name="RECORD-SPECIFICATION" type="AR:RECORD-SPECIFICATION" />
            <xsd:element name="STRING-LITERAL" type="AR:STRING-LITERAL" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Constants::RecordSpecification -->
  <xsd:complexType name="RECORD-SPECIFICATION" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:DATA-PROTOTYPE" />
      <xsd:group ref="AR:RECORD-SPECIFICATION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Datatypes::RecordType -->
  <xsd:group name="RECORD-TYPE">
    <xsd:sequence>
      <xsd:element name="ELEMENTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="RECORD-ELEMENT" type="AR:RECORD-ELEMENT" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Datatypes::RecordType -->
  <xsd:complexType name="RECORD-TYPE" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:RECORD-TYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUCParameterDefTemplate::ReferenceParamDef -->
  <xsd:group name="REFERENCE-PARAM-DEF">
    <xsd:annotation>
      <xsd:documentation>Specify references within the ECU Configuration Description between parameter containers.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DESTINATION-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:PARAM-CONF-CONTAINER-DEF--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUCParameterDefTemplate::ReferenceParamDef -->
  <xsd:complexType name="REFERENCE-PARAM-DEF" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specify references within the ECU Configuration Description between parameter containers.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PARAM-CONF-MULTIPLICITY" />
      <xsd:group ref="AR:COMMON-CONFIGURATION-ATTRIBUTES" />
      <xsd:group ref="AR:REFERENCE-PARAM-DEF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUCDescriptionTemplate::ReferenceValue -->
  <xsd:group name="REFERENCE-VALUE">
    <xsd:annotation>
      <xsd:documentation>Used to represent a configuration value that has a parameter definition of type ConfigReference (used for all of its specializations excluding InstanceReferenceParamDef).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="VALUE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:IDENTIFIABLE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUCDescriptionTemplate::ReferenceValue -->
  <xsd:complexType name="REFERENCE-VALUE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Used to represent a configuration value that has a parameter definition of type ConfigReference (used for all of its specializations excluding InstanceReferenceParamDef).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:CONFIG-REFERENCE-VALUE" />
      <xsd:group ref="AR:REFERENCE-VALUE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ProcessingUnit::Register -->
  <xsd:group name="REGISTER">
    <xsd:annotation>
      <xsd:documentation>The user available registers are a part of the programming model that consists of: Memory organisation and segmentation, Data types, Registers, Instruction format, Operand selection, Interrupts and exceptions.
Basically the register model contains the registers that are interest to the applications programmer; these registers can be grouped into three basic categories:
- General registers: These general-purpose registers are used primarily to contain operands for arithmetic and logical operations.
- Segment registers: These special-purpose registers permit software designers to choose either a flat or segmented model of memory organisation. These registers determine, at any given time, which segments of memory are currently addressable.
- Status and instruction registers: These special-purpose registers are used to record and alter certain aspects of the processor state.

The register model is only valuable data for low level programming, e.g assembler programming. The register model, along with the available OP codes takes influence on the performance of the PU. The most general impact of the register model to software is number of registers which have to be handled during interrupts or function calls.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="COUNT" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Describes how many registers are available of the specified type.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="TYPE" type="AR:REGISTER-TYPE-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Describes the kind of register.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ProcessingUnit::Register -->
  <xsd:complexType name="REGISTER" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The user available registers are a part of the programming model that consists of: Memory organisation and segmentation, Data types, Registers, Instruction format, Operand selection, Interrupts and exceptions.
Basically the register model contains the registers that are interest to the applications programmer; these registers can be grouped into three basic categories:
- General registers: These general-purpose registers are used primarily to contain operands for arithmetic and logical operations.
- Segment registers: These special-purpose registers permit software designers to choose either a flat or segmented model of memory organisation. These registers determine, at any given time, which segments of memory are currently addressable.
- Status and instruction registers: These special-purpose registers are used to record and alter certain aspects of the processor state.

The register model is only valuable data for low level programming, e.g assembler programming. The register model, along with the available OP codes takes influence on the performance of the PU. The most general impact of the register model to software is number of registers which have to be handled during interrupts or function calls.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:REGISTER" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Timing::RelativeTolerance -->
  <xsd:group name="RELATIVE-TOLERANCE">
    <xsd:annotation>
      <xsd:documentation>Maximum allowable deviation</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="RELATIVE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Maximum allowable deviation in percent</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Timing::RelativeTolerance -->
  <xsd:complexType name="RELATIVE-TOLERANCE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Maximum allowable deviation</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:RELATIVE-TOLERANCE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class LinCommunication::RelativelyScheduledTiming -->
  <xsd:group name="RELATIVELY-SCHEDULED-TIMING">
    <xsd:annotation>
      <xsd:documentation>Specification of a sending behavior where the transmission order is predefined, e.g. used on LIN buses</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DELAY" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Relative delay between this frame and the start 
of the successor frame in the schedule table in seconds.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="POSITION-IN-TABLE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Relative position of the frame described by this timing in the schedule table</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SCHEDULE-TABLE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:LIN-SCHEDULE-TABLE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class LinCommunication::RelativelyScheduledTiming -->
  <xsd:complexType name="RELATIVELY-SCHEDULED-TIMING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specification of a sending behavior where the transmission order is predefined, e.g. used on LIN buses</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:RELATIVELY-SCHEDULED-TIMING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Annotation::Remark -->
  <xsd:group name="REMARK">
    <xsd:annotation>
      <xsd:documentation>&lt;remark&gt; is used for comments e.g. on the specific calibration state. The remark can be a regular paragraph or a preformatted text.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__REMARK_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice>
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
        <xsd:element name="P" type="AR:ML-DATA-1" minOccurs="0" maxOccurs="unbounded" />
        <xsd:element name="VERBATIM" type="AR:ML-DATA-5" minOccurs="0" maxOccurs="unbounded" />
      </xsd:choice>
    </xsd:choice>
  </xsd:group>
  <!-- complex type for class Annotation::Remark -->
  <xsd:complexType name="REMARK" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>&lt;remark&gt; is used for comments e.g. on the specific calibration state. The remark can be a regular paragraph or a preformatted text.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__REMARK_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice minOccurs="0" maxOccurs="unbounded">
      <xsd:group ref="AR:REMARK" />
    </xsd:choice>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ApplicationAttributes::ReportFeature -->
  <xsd:group name="REPORT-FEATURE">
    <xsd:annotation>
      <xsd:documentation>This feature is used for input signals only. Each time the level of the associated data-element changes a dedicated  GET operation has to be invoked by the sensor software component, i.e. an appropriate runnable has to be started.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ApplicationAttributes::ReportFeature -->
  <xsd:complexType name="REPORT-FEATURE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This feature is used for input signals only. Each time the level of the associated data-element changes a dedicated  GET operation has to be invoked by the sensor software component, i.e. an appropriate runnable has to be started.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Timing::RequestControlledTiming -->
  <xsd:group name="REQUEST-CONTROLLED-TIMING">
    <xsd:annotation>
      <xsd:documentation>Specification of a request driven sending behavior. Semantics of this communication mechanism is that basic software stores values but does not send it out until a frame requesting the information is received.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="FINAL-REPETITIONS" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Number of repetitions the frame is sent for a single request</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="RESPONSE-TIME" type="AR:TIME-RANGE-TYPE" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Timing::RequestControlledTiming -->
  <xsd:complexType name="REQUEST-CONTROLLED-TIMING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specification of a request driven sending behavior. Semantics of this communication mechanism is that basic software stores values but does not send it out until a frame requesting the information is received.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:REQUEST-CONTROLLED-TIMING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ResourceConsumption::ResourceConsumption -->
  <xsd:group name="RESOURCE-CONSUMPTION">
    <xsd:annotation>
      <xsd:documentation>Description of consumed resources by one implementation of a software.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="EXECUTION-TIMES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="EXECUTION-TIME" type="AR:EXECUTION-TIME" />
            <xsd:element name="MEASURED-EXECUTION-TIME" type="AR:MEASURED-EXECUTION-TIME" />
            <xsd:element name="ROUGH-ESTIMATE-OF-EXECUTION-TIME" type="AR:ROUGH-ESTIMATE-OF-EXECUTION-TIME" />
            <xsd:element name="SIMULATED-EXECUTION-TIME" type="AR:SIMULATED-EXECUTION-TIME" />
            <xsd:element name="WORST-CASE-EXECUTION-TIME" type="AR:WORST-CASE-EXECUTION-TIME" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="HEAP-USAGES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="MEASURED-HEAP-USAGE" type="AR:MEASURED-HEAP-USAGE" />
            <xsd:element name="ROUGH-ESTIMATE-HEAP-USAGE" type="AR:ROUGH-ESTIMATE-HEAP-USAGE" />
            <xsd:element name="WORST-CASE-HEAP-USAGE" type="AR:WORST-CASE-HEAP-USAGE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="OBJECT-FILE-SECTIONS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="MEMORY-SECTION" type="AR:MEMORY-SECTION" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="STACK-USAGES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="MEASURED-STACK-USAGE" type="AR:MEASURED-STACK-USAGE" />
            <xsd:element name="ROUGH-ESTIMATE-STACK-USAGE" type="AR:ROUGH-ESTIMATE-STACK-USAGE" />
            <xsd:element name="WORST-CASE-STACK-USAGE" type="AR:WORST-CASE-STACK-USAGE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ResourceConsumption::ResourceConsumption -->
  <xsd:complexType name="RESOURCE-CONSUMPTION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Description of consumed resources by one implementation of a software.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:RESOURCE-CONSUMPTION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ServiceMapping::RoleBasedPPortAssignment -->
  <xsd:group name="ROLE-BASED-P-PORT-ASSIGNMENT">
    <xsd:annotation>
      <xsd:documentation>This class specifies an assignment of a role to a particular P-Port. This port must contain a service which is inside of the component and called by outside entity in order to handle a particular issue (e.g. a communication event). This is often named as callback.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="P-PORT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:P-PORT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="ROLE" type="AR:IDENTIFIER" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This is the role of the assigned Port in the given context.

The value must be a name of a PortInterface as standardized in the Software Specification of the related AUTOSAR Service.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ServiceMapping::RoleBasedPPortAssignment -->
  <xsd:complexType name="ROLE-BASED-P-PORT-ASSIGNMENT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This class specifies an assignment of a role to a particular P-Port. This port must contain a service which is inside of the component and called by outside entity in order to handle a particular issue (e.g. a communication event). This is often named as callback.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:ROLE-BASED-P-PORT-ASSIGNMENT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ServiceMapping::RoleBasedRPortAssignment -->
  <xsd:group name="ROLE-BASED-R-PORT-ASSIGNMENT">
    <xsd:annotation>
      <xsd:documentation>This class specifies an assignment of a role to a particular R-Port. This port must contain a service which is outside of the component and called by the component in order to handle a particular issue (e.g. a communication event).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="R-PORT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:R-PORT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="ROLE" type="AR:IDENTIFIER" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This is the role the assigned Port in given context.

The value must be a name of a  PortInterface as standardized in  Software Specification of the related AUTOSAR Service.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ServiceMapping::RoleBasedRPortAssignment -->
  <xsd:complexType name="ROLE-BASED-R-PORT-ASSIGNMENT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This class specifies an assignment of a role to a particular R-Port. This port must contain a service which is outside of the component and called by the component in order to handle a particular issue (e.g. a communication event).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:ROLE-BASED-R-PORT-ASSIGNMENT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class HeapUsage::RoughEstimateHeapUsage -->
  <xsd:group name="ROUGH-ESTIMATE-HEAP-USAGE">
    <xsd:annotation>
      <xsd:documentation>Rough estimation of the heap usage.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="MEMORY-CONSUMPTION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Rough estimate of the heap usage.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class HeapUsage::RoughEstimateHeapUsage -->
  <xsd:complexType name="ROUGH-ESTIMATE-HEAP-USAGE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Rough estimation of the heap usage.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HEAP-USAGE" />
      <xsd:group ref="AR:ROUGH-ESTIMATE-HEAP-USAGE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ExecutionTime::RoughEstimateOfExecutionTime -->
  <xsd:group name="ROUGH-ESTIMATE-OF-EXECUTION-TIME">
    <xsd:annotation>
      <xsd:documentation>Provides a description of a rough estimate on the ExecutionTime.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DESCRIPTION" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Provides description on the rough estimate of the ExecutionTime.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ExecutionTime::RoughEstimateOfExecutionTime -->
  <xsd:complexType name="ROUGH-ESTIMATE-OF-EXECUTION-TIME" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Provides a description of a rough estimate on the ExecutionTime.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:EXECUTION-TIME" />
      <xsd:group ref="AR:ROUGH-ESTIMATE-OF-EXECUTION-TIME" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class StackUsage::RoughEstimateStackUsage -->
  <xsd:group name="ROUGH-ESTIMATE-STACK-USAGE">
    <xsd:annotation>
      <xsd:documentation>Rough estimation of the stack usage.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="MEMORY-CONSUMPTION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Rough estimate of the stack usage.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class StackUsage::RoughEstimateStackUsage -->
  <xsd:complexType name="ROUGH-ESTIMATE-STACK-USAGE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Rough estimation of the stack usage.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:STACK-USAGE" />
      <xsd:group ref="AR:ROUGH-ESTIMATE-STACK-USAGE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class SwcInternalBehavior::RunnableEntity -->
  <xsd:group name="RUNNABLE-ENTITY">
    <xsd:annotation>
      <xsd:documentation>The runnable entities are the smallest code-fragments that are provided by the component and are executed in the RTE. Runnables are for instance set up to respond to data reception or operation invocation on a server.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="BSW-ENTITY-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:BSW-MODULE-ENTITY--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="CALPRM-ACCESSS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="CALPRM-ACCESS" type="AR:CALPRM-ACCESS" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="CAN-BE-INVOKED-CONCURRENTLY" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Normally, this is FALSE.
When this is TRUE, it is allowed that this runnable entity is invoked concurrently (even for one instance of the SW-C), which implies that it is the responsibility of the implementation of the runnable to take care of this form of concurrency.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="CAN-ENTER-EXCLUSIVE-AREA-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="CAN-ENTER-EXCLUSIVE-AREA-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:EXCLUSIVE-AREA--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="DATA-READ-ACCESSS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="DATA-READ-ACCESS" type="AR:DATA-READ-ACCESS" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="DATA-RECEIVE-POINTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="DATA-RECEIVE-POINT" type="AR:DATA-RECEIVE-POINT" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="DATA-SEND-POINTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="DATA-SEND-POINT" type="AR:DATA-SEND-POINT" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="DATA-WRITE-ACCESSS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="DATA-WRITE-ACCESS" type="AR:DATA-WRITE-ACCESS" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="MINIMUM-START-INTERVAL" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Specifies the time in seconds which two starts of a RunnableEntity are guaranteed to be separated.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MODE-SWITCH-POINTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="MODE-SWITCH-POINT" type="AR:MODE-SWITCH-POINT" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PER-INSTANCE-CALPRM-ACCESS-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="PER-INSTANCE-CALPRM-ACCESS-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:CALPRM-ELEMENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="READ-VARIABLE-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="READ-VARIABLE-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:INTER-RUNNABLE-VARIABLE--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="RUNS-INSIDE-EXCLUSIVE-AREA-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="RUNS-INSIDE-EXCLUSIVE-AREA-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:EXCLUSIVE-AREA--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SERVER-CALL-POINTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="ASYNCHRONOUS-SERVER-CALL-POINT" type="AR:ASYNCHRONOUS-SERVER-CALL-POINT" />
            <xsd:element name="SYNCHRONOUS-SERVER-CALL-POINT" type="AR:SYNCHRONOUS-SERVER-CALL-POINT" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SHARED-CALPRM-ACCESS-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SHARED-CALPRM-ACCESS-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:CALPRM-ELEMENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SYMBOL" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The symbol describing this runnable's entry point. This is considered the API of the runnable and is required during the RTE contract phase.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="WAIT-POINTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="WAIT-POINT" type="AR:WAIT-POINT" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="WRITTEN-VARIABLE-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="WRITTEN-VARIABLE-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:INTER-RUNNABLE-VARIABLE--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SwcInternalBehavior::RunnableEntity -->
  <xsd:complexType name="RUNNABLE-ENTITY" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The runnable entities are the smallest code-fragments that are provided by the component and are executed in the RTE. Runnables are for instance set up to respond to data reception or operation invocation on a server.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:RUNNABLE-ENTITY" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="RUNNABLE-ENTITY--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="RUNNABLE-ENTITY" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class GlobalConstraints::ScaleConstr -->
  <xsd:group name="SCALE-CONSTR">
    <xsd:sequence>
      <xsd:element name="SHORT-LABEL" type="AR:IDENTIFIER" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This element specifies a short name for the scaleConstr. This can for example be used to create more specific messages of a constraint checker. The constraints cannot be associated in the metamodel, therefore shortLabel is somehow a substitute for shortName.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="SCALE-CONSTR_TYPE__SHORT-LABEL";msr.tbdString="true";xml.sequenceOffset="20"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="DESC" type="AR:ML-DATA-2" minOccurs="0" maxOccurs="1" />
      <xsd:element name="LOWER-LIMIT" type="AR:LIMIT" minOccurs="0" maxOccurs="1" />
      <xsd:element name="UPPER-LIMIT" type="AR:LIMIT" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- attribute group for class GlobalConstraints::ScaleConstr -->
  <xsd:attributeGroup name="SCALE-CONSTR">
    <xsd:attribute name="VALIDITY" type="AR:SCALE-CONSTR-VALIDITY-ENUM" />
  </xsd:attributeGroup>
  <!-- complex type for class GlobalConstraints::ScaleConstr -->
  <xsd:complexType name="SCALE-CONSTR" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:SCALE-CONSTR" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:SCALE-CONSTR" />
  </xsd:complexType>
  <!-- element group for class GlobalConstraints::ScaleConstrs -->
  <xsd:group name="SCALE-CONSTRS">
    <xsd:sequence>
      <xsd:element name="SCALE-CONSTR" type="AR:SCALE-CONSTR" minOccurs="0" maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class GlobalConstraints::ScaleConstrs -->
  <xsd:complexType name="SCALE-CONSTRS" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:SCALE-CONSTRS" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class SpecialData::Sd -->
  <xsd:group name="SD">
    <xsd:annotation>
      <xsd:documentation>This class is a "Special Data" element. By using this element it is possible to extend the model with arbirtrary information. In this case the "role" is specified using gid.</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="SD";msr.id="type__SD_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- attribute group for class SpecialData::Sd -->
  <xsd:attributeGroup name="SD">
    <xsd:annotation>
      <xsd:documentation>This class is a "Special Data" element. By using this element it is possible to extend the model with arbirtrary information. In this case the "role" is specified using gid.</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="SD";msr.id="type__SD_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:attribute name="GID" type="xsd:NMTOKEN">
      <xsd:annotation>
        <xsd:documentation>This attributes specifies an identifier. Gid comes from the SGML-Term "Generic Identifier" which is the element name in XML. The role of this attribute is the same as the name of an XML - element.</xsd:documentation>
        <xsd:appinfo source="tags">msr.id="SD_TYPE__SD_TYPE__GID";xml.attribute="true"</xsd:appinfo>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:attributeGroup>
  <!-- complex type for class SpecialData::Sd -->
  <xsd:complexType name="SD" abstract="false" mixed="true">
    <xsd:annotation>
      <xsd:documentation>This class is a "Special Data" element. By using this element it is possible to extend the model with arbirtrary information. In this case the "role" is specified using gid.</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="SD";msr.id="type__SD_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice minOccurs="0" maxOccurs="unbounded" />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:SD" />
  </xsd:complexType>
  <!-- element group for class SpecialData::Sdg -->
  <xsd:group name="SDG">
    <xsd:annotation>
      <xsd:documentation>Sdg is a generic model which can be used to keep arbitrary information which is not explicitly modeled in the metamodel. Sdg can have various contets as defined by sdgContentsType. Special Data should only be used moderately since all elements should be defined in the metamodel. Thereby SDG should be considered as a temporary solution when no explicit model is available. If an sdgCaption is available, it is possible to establish a reference to the sdg structure.</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="ASAM-SDG";msr.id="type__SDG_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SDG-CAPTION" type="AR:SDG-CAPTION" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SDG-CAPTION-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SDG-CAPTION--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:choice minOccurs="0" maxOccurs="1">
        <xsd:group ref="AR:SDG-CONTENTS" />
      </xsd:choice>
    </xsd:sequence>
  </xsd:group>
  <!-- attribute group for class SpecialData::Sdg -->
  <xsd:attributeGroup name="SDG">
    <xsd:annotation>
      <xsd:documentation>Sdg is a generic model which can be used to keep arbitrary information which is not explicitly modeled in the metamodel. Sdg can have various contets as defined by sdgContentsType. Special Data should only be used moderately since all elements should be defined in the metamodel. Thereby SDG should be considered as a temporary solution when no explicit model is available. If an sdgCaption is available, it is possible to establish a reference to the sdg structure.</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="ASAM-SDG";msr.id="type__SDG_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:attribute name="GID" type="xsd:NMTOKEN">
      <xsd:annotation>
        <xsd:documentation>This attributes specifies an identifier. Gid comes from the SGML-Term "Generic Identifier" which is the element name in XML. The role of this attribute is the same as the name of an XML - element.</xsd:documentation>
        <xsd:appinfo source="tags">msr.id="SDG_TYPE__SDG_TYPE__GID";xml.attribute="true"</xsd:appinfo>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:attributeGroup>
  <!-- complex type for class SpecialData::Sdg -->
  <xsd:complexType name="SDG" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Sdg is a generic model which can be used to keep arbitrary information which is not explicitly modeled in the metamodel. Sdg can have various contets as defined by sdgContentsType. Special Data should only be used moderately since all elements should be defined in the metamodel. Thereby SDG should be considered as a temporary solution when no explicit model is available. If an sdgCaption is available, it is possible to establish a reference to the sdg structure.</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="ASAM-SDG";msr.id="type__SDG_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SDG" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:SDG" />
  </xsd:complexType>
  <!-- element group for class SpecialData::SdgCaption -->
  <xsd:group name="SDG-CAPTION">
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class SpecialData::SdgCaption -->
  <xsd:complexType name="SDG-CAPTION" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="SDG-CAPTION--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="SDG-CAPTION" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class SpecialData::SdgContents -->
  <xsd:group name="SDG-CONTENTS">
    <xsd:choice>
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
        <xsd:element name="SDX" type="AR:SDX" minOccurs="0" maxOccurs="unbounded" />
        <xsd:element name="SD" type="AR:SD" minOccurs="0" maxOccurs="unbounded" />
        <xsd:element name="SDG" type="AR:SDG" minOccurs="0" maxOccurs="unbounded" />
      </xsd:choice>
    </xsd:choice>
  </xsd:group>
  <!-- complex type for class SpecialData::SdgContents -->
  <xsd:complexType name="SDG-CONTENTS" abstract="false" mixed="false">
    <xsd:choice minOccurs="0" maxOccurs="unbounded">
      <xsd:group ref="AR:SDG-CONTENTS" />
    </xsd:choice>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class SpecialData::Sdx -->
  <xsd:group name="SDX">
    <xsd:annotation>
      <xsd:documentation>This is a class which allows to refer to any identifiable object. It could be modeled as an association to Identifiable. But for compatibility reasons to ASAM it is left as it is.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- attribute group for class SpecialData::Sdx -->
  <xsd:attributeGroup name="SDX">
    <xsd:annotation>
      <xsd:documentation>This is a class which allows to refer to any identifiable object. It could be modeled as an association to Identifiable. But for compatibility reasons to ASAM it is left as it is.</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="GID" type="xsd:NMTOKEN">
      <xsd:annotation>
        <xsd:documentation>This attributes specifies an identifier. Gid comes from the SGML-Term "Generic Identifier" which is the element name in XML. The role of this attribute is the same as the name of an XML - element.</xsd:documentation>
        <xsd:appinfo source="tags">msr.id="SDG_TYPE__SDG_TYPE__GID";xml.attribute="true"</xsd:appinfo>
      </xsd:annotation>
    </xsd:attribute>
    <xsd:attribute name="ID-CLASS" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>This specifies the class of the referenced object.</xsd:documentation>
        <xsd:appinfo source="tags">msr.id="SD_TYPE__SD_TYPE__ID-CLASS";xml.attribute="true"</xsd:appinfo>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:attributeGroup>
  <!-- complex type for class SpecialData::Sdx -->
  <xsd:complexType name="SDX" abstract="false" mixed="true">
    <xsd:annotation>
      <xsd:documentation>This is a class which allows to refer to any identifiable object. It could be modeled as an association to Identifiable. But for compatibility reasons to ASAM it is left as it is.</xsd:documentation>
    </xsd:annotation>
    <xsd:choice minOccurs="0" maxOccurs="unbounded" />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:SDX" />
  </xsd:complexType>
  <!-- element group for class ApplicationAttributes::SenderAnnotation -->
  <xsd:group name="SENDER-ANNOTATION">
    <xsd:annotation>
      <xsd:documentation>Annotation of a sender port, specifying properties of data elements that don't affect communication or generation of the RTE.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ApplicationAttributes::SenderAnnotation -->
  <xsd:complexType name="SENDER-ANNOTATION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Annotation of a sender port, specifying properties of data elements that don't affect communication or generation of the RTE.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:GENERAL-ANNOTATION" />
      <xsd:group ref="AR:SENDER-RECEIVER-ANNOTATION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Communication::SenderComSpec -->
  <xsd:group name="SENDER-COM-SPEC">
    <xsd:annotation>
      <xsd:documentation>Communication attributes for a sender port (P-Port and sender-receiver interface).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DATA-ELEMENT-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:DATA-ELEMENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="TRANSMISSION-ACKNOWLEDGE" type="AR:TRANSMISSION-ACKNOWLEDGEMENT-REQUEST" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class DataMapping::SenderRecArrayElementMapping -->
  <xsd:group name="SENDER-REC-ARRAY-ELEMENT-MAPPING">
    <xsd:annotation>
      <xsd:documentation>The ArrayElement may be a primitive one or a composite one. If the element is primitive, it will be mapped to the "SystemSignal" (multiplicity 1).
If the element is composite, there will be no mapping to the "SystemSignal" (multiplicity 0). In this case the "ArrayElementMapping" Element will aggregate the "TypeMapping" Element. In that way also the composite datatypes can be mapped to SystemSignals. 

Regardless whether composite or primitive array element is mapped the indexed element always needs to be specified.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="COMPLEX-TYPE-MAPPING" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="1">
            <xsd:element name="SENDER-REC-ARRAY-TYPE-MAPPING" type="AR:SENDER-REC-ARRAY-TYPE-MAPPING" />
            <xsd:element name="SENDER-REC-RECORD-TYPE-MAPPING" type="AR:SENDER-REC-RECORD-TYPE-MAPPING" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="INDEXED-ARRAY-ELEMENT" type="AR:INDEXED-ARRAY-ELEMENT" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SIGNAL-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SYSTEM-SIGNAL--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DataMapping::SenderRecArrayElementMapping -->
  <xsd:complexType name="SENDER-REC-ARRAY-ELEMENT-MAPPING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The ArrayElement may be a primitive one or a composite one. If the element is primitive, it will be mapped to the "SystemSignal" (multiplicity 1).
If the element is composite, there will be no mapping to the "SystemSignal" (multiplicity 0). In this case the "ArrayElementMapping" Element will aggregate the "TypeMapping" Element. In that way also the composite datatypes can be mapped to SystemSignals. 

Regardless whether composite or primitive array element is mapped the indexed element always needs to be specified.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SENDER-REC-ARRAY-ELEMENT-MAPPING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class DataMapping::SenderRecArrayTypeMapping -->
  <xsd:group name="SENDER-REC-ARRAY-TYPE-MAPPING">
    <xsd:annotation>
      <xsd:documentation>If the compositeType is an Array, the "ArrayTypeMapping" will be used.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ARRAY-ELEMENT-MAPPINGS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SENDER-REC-ARRAY-ELEMENT-MAPPING" type="AR:SENDER-REC-ARRAY-ELEMENT-MAPPING" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DataMapping::SenderRecArrayTypeMapping -->
  <xsd:complexType name="SENDER-REC-ARRAY-TYPE-MAPPING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>If the compositeType is an Array, the "ArrayTypeMapping" will be used.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SENDER-REC-ARRAY-TYPE-MAPPING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class DataMapping::SenderRecCompositeTypeMapping -->
  <xsd:group name="SENDER-REC-COMPOSITE-TYPE-MAPPING">
    <xsd:annotation>
      <xsd:documentation>Two mappings exist for the composite data types:
"ArrayTypeMapping" and "RecordTypeMapping".
In both, a primitive datatype will be mapped to a system signal. 

But it is also possible to combine the arrays and the records, so that an "array" could be an element of a "record" and in the same manner a "record" could be an element of an "array". Nesting these data types is also possible.

If an element of a composite data type is again a composite one, the "CompositeTypeMapping" element will be used one more time (aggregation between the ArrayElementMapping and CompositeTypeMapping or aggregation between the RecordElementMapping and CompositeTypeMapping).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- element group for class DataMapping::SenderRecRecordElementMapping -->
  <xsd:group name="SENDER-REC-RECORD-ELEMENT-MAPPING">
    <xsd:annotation>
      <xsd:documentation>Mapping of a primitive record element to a SystemSignal. 

If the element is composite, there will be no mapping (multiplicity 0). In this case the "RecordElementMapping" Element will aggregate the "TypeMapping" Element. In that way also the composite datatypes can be mapped to SystemSignals. 

Regardless whether composite or primitive record element is mapped the record element always needs to be specified.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="COMPLEX-TYPE-MAPPING" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="1">
            <xsd:element name="SENDER-REC-ARRAY-TYPE-MAPPING" type="AR:SENDER-REC-ARRAY-TYPE-MAPPING" />
            <xsd:element name="SENDER-REC-RECORD-TYPE-MAPPING" type="AR:SENDER-REC-RECORD-TYPE-MAPPING" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="RECORD-ELEMENT-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:RECORD-ELEMENT--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SIGNAL-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SYSTEM-SIGNAL--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DataMapping::SenderRecRecordElementMapping -->
  <xsd:complexType name="SENDER-REC-RECORD-ELEMENT-MAPPING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Mapping of a primitive record element to a SystemSignal. 

If the element is composite, there will be no mapping (multiplicity 0). In this case the "RecordElementMapping" Element will aggregate the "TypeMapping" Element. In that way also the composite datatypes can be mapped to SystemSignals. 

Regardless whether composite or primitive record element is mapped the record element always needs to be specified.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SENDER-REC-RECORD-ELEMENT-MAPPING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class DataMapping::SenderRecRecordTypeMapping -->
  <xsd:group name="SENDER-REC-RECORD-TYPE-MAPPING">
    <xsd:annotation>
      <xsd:documentation>If the compositeType is a Record, the "RecordTypeMapping" will be used.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="RECORD-ELEMENT-MAPPINGS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SENDER-REC-RECORD-ELEMENT-MAPPING" type="AR:SENDER-REC-RECORD-ELEMENT-MAPPING" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DataMapping::SenderRecRecordTypeMapping -->
  <xsd:complexType name="SENDER-REC-RECORD-TYPE-MAPPING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>If the compositeType is a Record, the "RecordTypeMapping" will be used.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SENDER-REC-RECORD-TYPE-MAPPING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ApplicationAttributes::SenderReceiverAnnotation -->
  <xsd:group name="SENDER-RECEIVER-ANNOTATION">
    <xsd:annotation>
      <xsd:documentation>Annotation of the data elements in a port that realizes a sender/receiver interface.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="COMPUTED" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Flag whether this data element was not measured directly but instead was calculated from possibly several other measured or calculated values.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="DATA-ELEMENT-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:DATA-ELEMENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="LIMIT-KIND" type="AR:LIMIT-KIND" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This min or max has not to be mismatched with the min- and max for data-value in a compu-method. For example, this annotation
shows when the result of the calculation performed in a RunnableEntity owned by one AtomicSoftwareComponentType is transmitted to another AtomicSoftwareComponentType whose RunnableEntity will use this value as a limit, e.g. the max.power which can be used by that software-component, or the current min. slip.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PROCESSING-KIND" type="AR:PROCESSING-KIND" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class PortInterface::SenderReceiverInterface -->
  <xsd:group name="SENDER-RECEIVER-INTERFACE">
    <xsd:annotation>
      <xsd:documentation>A sender/receiver interface declares a number of data elements to be sent and received.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DATA-ELEMENTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="DATA-ELEMENT-PROTOTYPE" type="AR:DATA-ELEMENT-PROTOTYPE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="MODE-GROUPS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="MODE-DECLARATION-GROUP-PROTOTYPE" type="AR:MODE-DECLARATION-GROUP-PROTOTYPE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class PortInterface::SenderReceiverInterface -->
  <xsd:complexType name="SENDER-RECEIVER-INTERFACE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A sender/receiver interface declares a number of data elements to be sent and received.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PORT-INTERFACE" />
      <xsd:group ref="AR:SENDER-RECEIVER-INTERFACE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class DataMapping::SenderReceiverToSignalGroupMapping -->
  <xsd:group name="SENDER-RECEIVER-TO-SIGNAL-GROUP-MAPPING">
    <xsd:annotation>
      <xsd:documentation>Mapping of a sender receiver communication data element with a composite datatype to a signal group.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DATA-ELEMENT-IREF" type="AR:SENDER-RECEIVER-TO-SIGNAL-GROUP-MAPPING--DATA-ELEMENT-IREF" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SIGNAL-GROUP-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SYSTEM-SIGNAL-GROUP--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="TYPE-MAPPING" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="1">
            <xsd:element name="SENDER-REC-ARRAY-TYPE-MAPPING" type="AR:SENDER-REC-ARRAY-TYPE-MAPPING" />
            <xsd:element name="SENDER-REC-RECORD-TYPE-MAPPING" type="AR:SENDER-REC-RECORD-TYPE-MAPPING" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DataMapping::SenderReceiverToSignalGroupMapping -->
  <xsd:complexType name="SENDER-RECEIVER-TO-SIGNAL-GROUP-MAPPING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Mapping of a sender receiver communication data element with a composite datatype to a signal group.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SENDER-RECEIVER-TO-SIGNAL-GROUP-MAPPING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class _instanceRef::SenderReceiverToSignalGroupMapping_dataElement -->
  <xsd:group name="SENDER-RECEIVER-TO-SIGNAL-GROUP-MAPPING--DATA-ELEMENT-IREF">
    <xsd:sequence>
      <xsd:element name="SOFTWARE-COMPOSITION-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SOFTWARE-COMPOSITION--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="COMPONENT-PROTOTYPE-REF" minOccurs="0" maxOccurs="unbounded">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMPONENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PORT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:PORT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="DATA-ELEMENT-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:DATA-ELEMENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::SenderReceiverToSignalGroupMapping_dataElement -->
  <xsd:complexType name="SENDER-RECEIVER-TO-SIGNAL-GROUP-MAPPING--DATA-ELEMENT-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:SENDER-RECEIVER-TO-SIGNAL-GROUP-MAPPING--DATA-ELEMENT-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class DataMapping::SenderReceiverToSignalMapping -->
  <xsd:group name="SENDER-RECEIVER-TO-SIGNAL-MAPPING">
    <xsd:annotation>
      <xsd:documentation>Mapping of a sender receiver communication data element with a primitive datatype to a signal. 
If the data element has to be transmitted to several receivers there is still exactly one mapping defined.  In case of 1:n communication the DataElementPrototype in the ProvidePort of the ComponentPrototype is still mapped to only one SystemSignal.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DATA-ELEMENT-IREF" type="AR:SENDER-RECEIVER-TO-SIGNAL-MAPPING--DATA-ELEMENT-IREF" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SIGNAL-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SYSTEM-SIGNAL--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DataMapping::SenderReceiverToSignalMapping -->
  <xsd:complexType name="SENDER-RECEIVER-TO-SIGNAL-MAPPING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Mapping of a sender receiver communication data element with a primitive datatype to a signal. 
If the data element has to be transmitted to several receivers there is still exactly one mapping defined.  In case of 1:n communication the DataElementPrototype in the ProvidePort of the ComponentPrototype is still mapped to only one SystemSignal.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SENDER-RECEIVER-TO-SIGNAL-MAPPING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class _instanceRef::SenderReceiverToSignalMapping_dataElement -->
  <xsd:group name="SENDER-RECEIVER-TO-SIGNAL-MAPPING--DATA-ELEMENT-IREF">
    <xsd:sequence>
      <xsd:element name="SOFTWARE-COMPOSITION-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SOFTWARE-COMPOSITION--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="COMPONENT-PROTOTYPE-REF" minOccurs="0" maxOccurs="unbounded">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMPONENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PORT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:PORT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="DATA-ELEMENT-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:DATA-ELEMENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::SenderReceiverToSignalMapping_dataElement -->
  <xsd:complexType name="SENDER-RECEIVER-TO-SIGNAL-MAPPING--DATA-ELEMENT-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:SENDER-RECEIVER-TO-SIGNAL-MAPPING--DATA-ELEMENT-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class SensorActuator::SensorActuatorHW -->
  <xsd:group name="SENSOR-ACTUATOR-HW">
    <xsd:annotation>
      <xsd:documentation>The common attributes for sensors and actuators.
The sensor and actuators can be connected via a Peripheral HW Port, a Communication HW Port or a Power Driver HW Port.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ACCURACY" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines the error in the representation of the Technical Signal in the data format
This applies only if the Technical Signal is encoded before it is transferred to the ECU Electronics (e.g. via Communication Transceiver HW Port).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="CYCLE-TIME" type="AR:TIME-RANGE" minOccurs="0" maxOccurs="1" />
      <xsd:element name="RESOLUTION" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines the granularity of the representation of the Technical Signal in the data format.
This applies only if the Technical Signal is encoded before it is transferred to the ECU Electronics (e.g. via Communication Transceiver HW Port).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="TYPE" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines the general type of the sensor/actuator type is a most common naming for a sensor/actuator and is an open list and is not restricted to the following items. Several sets of types exist. Type is mandatory for the usage of the template
- Sensor: Temperature, Pressure, Distance, Hall
- Actuator: DC Motor, Valve, Relay, Display</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:simpleType name="SENSOR-ACTUATOR-HW--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="ACTUATOR-HW" />
      <xsd:enumeration value="DISPLAY-HW" />
      <xsd:enumeration value="SENSOR-ACTUATOR-HW" />
      <xsd:enumeration value="SENSOR-HW" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class Components::SensorActuatorSoftwareComponentType -->
  <xsd:group name="SENSOR-ACTUATOR-SOFTWARE-COMPONENT-TYPE">
    <xsd:annotation>
      <xsd:documentation>The SensorActuatorSoftwareComponentType introduces the possibility to link from the software representation of a sensor/actuator to its hardware description provided by the ECU Resource Template.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SENSOR-ACTUATOR-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SENSOR-ACTUATOR-HW--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Components::SensorActuatorSoftwareComponentType -->
  <xsd:complexType name="SENSOR-ACTUATOR-SOFTWARE-COMPONENT-TYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The SensorActuatorSoftwareComponentType introduces the possibility to link from the software representation of a sensor/actuator to its hardware description provided by the ECU Resource Template.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:COMPONENT-TYPE" />
      <xsd:group ref="AR:SENSOR-ACTUATOR-SOFTWARE-COMPONENT-TYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class SensorActuator::SensorHW -->
  <xsd:group name="SENSOR-HW">
    <xsd:annotation>
      <xsd:documentation>HW Element Sensor definition.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SIGNAL-QUALITY" type="AR:SENSOR-HW-SIGNAL-QUALITY-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines the quality of the data received from a sensor. Depending on this information later processing on the signal has to be done in HW or SW.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SensorActuator::SensorHW -->
  <xsd:complexType name="SENSOR-HW" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>HW Element Sensor definition.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-ELEMENT" />
      <xsd:group ref="AR:SENSOR-ACTUATOR-HW" />
      <xsd:group ref="AR:SENSOR-HW" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class SignalPaths::SeparateSignalPath -->
  <xsd:group name="SEPARATE-SIGNAL-PATH">
    <xsd:annotation>
      <xsd:documentation>The SeparateSignalPath describes that two SwcToSwcSignals and/or SwcToSwcOperationArguments must not take the same way (Signal Path) in the topology (e.g. Redundancy).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="OPERATIONS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SWC-TO-SWC-OPERATION-ARGUMENTS" type="AR:SWC-TO-SWC-OPERATION-ARGUMENTS" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SIGNALS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SWC-TO-SWC-SIGNAL" type="AR:SWC-TO-SWC-SIGNAL" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SignalPaths::SeparateSignalPath -->
  <xsd:complexType name="SEPARATE-SIGNAL-PATH" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The SeparateSignalPath describes that two SwcToSwcSignals and/or SwcToSwcOperationArguments must not take the same way (Signal Path) in the topology (e.g. Redundancy).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SEPARATE-SIGNAL-PATH" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class DataMapping::SequenceCounterMapping -->
  <xsd:group name="SEQUENCE-COUNTER-MAPPING">
    <xsd:annotation>
      <xsd:documentation>The purpose of sequence counters is to map a response to the correct request of a known client.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SYSTEM-SIGNAL-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SYSTEM-SIGNAL--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DataMapping::SequenceCounterMapping -->
  <xsd:complexType name="SEQUENCE-COUNTER-MAPPING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The purpose of sequence counters is to map a response to the correct request of a known client.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SEQUENCE-COUNTER-MAPPING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ServerCall::ServerCallPoint -->
  <xsd:group name="SERVER-CALL-POINT">
    <xsd:annotation>
      <xsd:documentation>When a runnable has a serverCallPoint, it has the possibility to invoke any of the operations of a specific rport of the component.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="OPERATION-IREFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="OPERATION-IREF" type="AR:SERVER-CALL-POINT--OPERATION-IREF" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="TIMEOUT" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Time in seconds before the server call times out and returns with an error message. It depends on the call type (synchronous or asynchronous) how this is reported.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class _instanceRef::ServerCallPoint_operation -->
  <xsd:group name="SERVER-CALL-POINT--OPERATION-IREF">
    <xsd:sequence>
      <xsd:element name="R-PORT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:R-PORT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="OPERATION-PROTOTYPE-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:OPERATION-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::ServerCallPoint_operation -->
  <xsd:complexType name="SERVER-CALL-POINT--OPERATION-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:SERVER-CALL-POINT--OPERATION-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Communication::ServerComSpec -->
  <xsd:group name="SERVER-COM-SPEC">
    <xsd:annotation>
      <xsd:documentation>Communication attributes for a server port (P-Port and client-server interface).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="OPERATION-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:OPERATION-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="QUEUE-LENGTH" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Length of call queue on the server side. The queue is implemented by the RTE.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Communication::ServerComSpec -->
  <xsd:complexType name="SERVER-COM-SPEC" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Communication attributes for a server port (P-Port and client-server interface).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SERVER-COM-SPEC" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Services::ServiceComponentPrototype -->
  <xsd:group name="SERVICE-COMPONENT-PROTOTYPE">
    <xsd:annotation>
      <xsd:documentation>Each service in an ECU is represented by exactly one ServiceComponentPrototype. Instances of this class are only to be created in ECU Configuration phase for the specific purpose of the service configuration.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SERVICE-COMPONENT-TREF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SERVICE-COMPONENT-TYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Services::ServiceComponentPrototype -->
  <xsd:complexType name="SERVICE-COMPONENT-PROTOTYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Each service in an ECU is represented by exactly one ServiceComponentPrototype. Instances of this class are only to be created in ECU Configuration phase for the specific purpose of the service configuration.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:SERVICE-COMPONENT-PROTOTYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="SERVICE-COMPONENT-PROTOTYPE--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="SERVICE-COMPONENT-PROTOTYPE" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class Components::ServiceComponentType -->
  <xsd:group name="SERVICE-COMPONENT-TYPE">
    <xsd:annotation>
      <xsd:documentation>ServiceComponentType is used for configuring services for a given ECU. Instances of this class are only to be created in ECU Configuration phase for the specific purpose of the service configuration.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="BSW-MODULE-DESCRIPTION-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="BSW-MODULE-DESCRIPTION-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:BSW-MODULE-DESCRIPTION--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Components::ServiceComponentType -->
  <xsd:complexType name="SERVICE-COMPONENT-TYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>ServiceComponentType is used for configuring services for a given ECU. Instances of this class are only to be created in ECU Configuration phase for the specific purpose of the service configuration.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:COMPONENT-TYPE" />
      <xsd:group ref="AR:SERVICE-COMPONENT-TYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="SERVICE-COMPONENT-TYPE--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="SERVICE-COMPONENT-TYPE" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class Composition::ServiceConnectorPrototype -->
  <xsd:group name="SERVICE-CONNECTOR-PROTOTYPE">
    <xsd:annotation>
      <xsd:documentation>A ServiceConnectorPrototype connects a PortPrototype owned by an ComponentPrototype
with the service PortPrototype owned by the ServiceComponentPrototype. A ServiceConnectorPrototype is only added to the model in ECU Configuration phase for the specific purpose of configuring services within an EcuSwComposition.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="APPLICATION-PORT-IREF" type="AR:SERVICE-CONNECTOR-PROTOTYPE--APPLICATION-PORT-IREF" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SERVICE-PORT-IREF" type="AR:SERVICE-CONNECTOR-PROTOTYPE--SERVICE-PORT-IREF" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Composition::ServiceConnectorPrototype -->
  <xsd:complexType name="SERVICE-CONNECTOR-PROTOTYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A ServiceConnectorPrototype connects a PortPrototype owned by an ComponentPrototype
with the service PortPrototype owned by the ServiceComponentPrototype. A ServiceConnectorPrototype is only added to the model in ECU Configuration phase for the specific purpose of configuring services within an EcuSwComposition.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:SERVICE-CONNECTOR-PROTOTYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class _instanceRef::ServiceConnectorPrototype_applicationPort -->
  <xsd:group name="SERVICE-CONNECTOR-PROTOTYPE--APPLICATION-PORT-IREF">
    <xsd:sequence>
      <xsd:element name="SOFTWARE-COMPOSITION-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SOFTWARE-COMPOSITION--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="COMPONENT-PROTOTYPE-REF" minOccurs="0" maxOccurs="unbounded">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMPONENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PORT-PROTOTYPE-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:PORT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::ServiceConnectorPrototype_applicationPort -->
  <xsd:complexType name="SERVICE-CONNECTOR-PROTOTYPE--APPLICATION-PORT-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:SERVICE-CONNECTOR-PROTOTYPE--APPLICATION-PORT-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class _instanceRef::ServiceConnectorPrototype_servicePort -->
  <xsd:group name="SERVICE-CONNECTOR-PROTOTYPE--SERVICE-PORT-IREF">
    <xsd:sequence>
      <xsd:element name="SERVICE-COMPONENT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SERVICE-COMPONENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PORT-PROTOTYPE-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:PORT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::ServiceConnectorPrototype_servicePort -->
  <xsd:complexType name="SERVICE-CONNECTOR-PROTOTYPE--SERVICE-PORT-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:SERVICE-CONNECTOR-PROTOTYPE--SERVICE-PORT-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ServiceNeeds::ServiceNeeds -->
  <xsd:group name="SERVICE-NEEDS">
    <xsd:annotation>
      <xsd:documentation>This expresses the abstract needs that a Software Component or Basic Software Module has on the configuration of an AUTOSAR Service to which it will be connected. "Abstract needs" means, that the model abstracts from the Configuration Paramaters of the underlying Basic Software.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ServiceNeeds::ServiceNeeds -->
  <xsd:complexType name="SERVICE-NEEDS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This expresses the abstract needs that a Software Component or Basic Software Module has on the configuration of an AUTOSAR Service to which it will be connected. "Abstract needs" means, that the model abstracts from the Configuration Paramaters of the underlying Basic Software.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class CoreCommunication::SignalIPdu -->
  <xsd:group name="SIGNAL-I-PDU">
    <xsd:annotation>
      <xsd:documentation>Represents the I-PDU's handled by Com. 
The SignalIPdu assembled and disassembled in AUTOSAR COM consists of one or more signals.

In case no multiplexing is performed this IPdu is routed to/from the Interface Layer.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="I-PDU-TIMING-SPECIFICATION" type="AR:I-PDU-TIMING" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SIGNAL-TO-PDU-MAPPINGS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="I-SIGNAL-TO-I-PDU-MAPPING" type="AR:I-SIGNAL-TO-I-PDU-MAPPING" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class CoreCommunication::SignalIPdu -->
  <xsd:complexType name="SIGNAL-I-PDU" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Represents the I-PDU's handled by Com. 
The SignalIPdu assembled and disassembled in AUTOSAR COM consists of one or more signals.

In case no multiplexing is performed this IPdu is routed to/from the Interface Layer.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:I-PDU" />
      <xsd:group ref="AR:SIGNAL-I-PDU" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="SIGNAL-I-PDU--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="SIGNAL-I-PDU" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class Fibex4Multiplatform::SignalMapping -->
  <xsd:group name="SIGNAL-MAPPING">
    <xsd:annotation>
      <xsd:documentation>Arranges those signals that are transferred by the gateway from one channel to the other in pairs and defines the mapping between them.
Each pair consists in a source and a target referencing to a ISignalToIPduMapping.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SOURCE-SIGNAL-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:I-SIGNAL-TO-I-PDU-MAPPING--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="TARGET-SIGNAL-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:I-SIGNAL-TO-I-PDU-MAPPING--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Fibex4Multiplatform::SignalMapping -->
  <xsd:complexType name="SIGNAL-MAPPING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Arranges those signals that are transferred by the gateway from one channel to the other in pairs and defines the mapping between them.
Each pair consists in a source and a target referencing to a ISignalToIPduMapping.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SIGNAL-MAPPING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class SignalPaths::SignalPathConstraint -->
  <xsd:group name="SIGNAL-PATH-CONSTRAINT">
    <xsd:annotation>
      <xsd:documentation>Additional guidelines for the System Generator, which specific way a signal between two Software Components should take in the network without defining in which frame and with which timing it is transmitted.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- element group for class CoreCommunication::SignalPort -->
  <xsd:group name="SIGNAL-PORT">
    <xsd:annotation>
      <xsd:documentation>Connectors reception or send port on the referenced channel referenced by an ISignalTriggering.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="TIMEOUT" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Optional timeout value in seconds for the reception of the ISignal.
In case the System Description doesn't use a complete Software Component Description (VFB View). This supports the inclusion of legacy system signals.

If a full DataMapping exist for the SystemSignal this information may be available from a configured ReceiverComSpec, in this case the timeout value in ReceiverComSpec override this optional timeout specification.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class CoreCommunication::SignalPort -->
  <xsd:complexType name="SIGNAL-PORT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Connectors reception or send port on the referenced channel referenced by an ISignalTriggering.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:COMM-CONNECTOR-PORT" />
      <xsd:group ref="AR:SIGNAL-PORT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="SIGNAL-PORT--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="SIGNAL-PORT" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class ECUResourceTemplate::SignalTransformation -->
  <xsd:group name="SIGNAL-TRANSFORMATION">
    <xsd:annotation>
      <xsd:documentation>The Signal Transformation defines the conversion of the signal attached to a HW Port (direction In) and a signal attached to a HW Port (direction Out).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="INPUT-HW-PORT-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="INPUT-HW-PORT-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:HW-PORT--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="OUTPUT-HW-PORT-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="OUTPUT-HW-PORT-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:HW-PORT--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUResourceTemplate::SignalTransformation -->
  <xsd:complexType name="SIGNAL-TRANSFORMATION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The Signal Transformation defines the conversion of the signal attached to a HW Port (direction In) and a signal attached to a HW Port (direction Out).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SIGNAL-TRANSFORMATION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ExecutionTime::SimulatedExecutionTime -->
  <xsd:group name="SIMULATED-EXECUTION-TIME">
    <xsd:annotation>
      <xsd:documentation>Specifies the ExecutionTime which has been gathered using simulation means.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="AVERAGE-EXECUTION-TIME" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Average SimulatedExecutionTime.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MAXIMAL-EXECUTION-TIME" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Maximum SimulatedExecutionTime.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MINIMAL-EXECUTION-TIME" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Minimum SimulatedExecutionTime.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ExecutionTime::SimulatedExecutionTime -->
  <xsd:complexType name="SIMULATED-EXECUTION-TIME" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specifies the ExecutionTime which has been gathered using simulation means.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:EXECUTION-TIME" />
      <xsd:group ref="AR:SIMULATED-EXECUTION-TIME" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class SingleLanguageData::SlData1 -->
  <xsd:group name="SL-DATA-1">
    <xsd:annotation>
      <xsd:documentation>SingleLanguageParagraph

This is the content model of a single language paragraph in a documentation.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__sl-data-1";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class SingleLanguageData::SlData1 -->
  <xsd:complexType name="SL-DATA-1" abstract="false" mixed="true">
    <xsd:annotation>
      <xsd:documentation>SingleLanguageParagraph

This is the content model of a single language paragraph in a documentation.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__sl-data-1";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice minOccurs="0" maxOccurs="unbounded" />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class SingleLanguageData::SlData10 -->
  <xsd:group name="SL-DATA-10">
    <xsd:annotation>
      <xsd:documentation>SingleLanguagePlainText</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__sl-data-10";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class SingleLanguageData::SlData10 -->
  <xsd:complexType name="SL-DATA-10" abstract="false" mixed="true">
    <xsd:annotation>
      <xsd:documentation>SingleLanguagePlainText</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__sl-data-10";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice minOccurs="0" maxOccurs="unbounded" />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class SingleLanguageData::SlData2 -->
  <xsd:group name="SL-DATA-2">
    <xsd:annotation>
      <xsd:documentation>SingleLanguageOverviewParagraph

This is the model for a single language paragraph in an overview item.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__sl-data-2";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class SingleLanguageData::SlData2 -->
  <xsd:complexType name="SL-DATA-2" abstract="false" mixed="true">
    <xsd:annotation>
      <xsd:documentation>SingleLanguageOverviewParagraph

This is the model for a single language paragraph in an overview item.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__sl-data-2";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice minOccurs="0" maxOccurs="unbounded" />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class SingleLanguageData::SlData3 -->
  <xsd:group name="SL-DATA-3">
    <xsd:annotation>
      <xsd:documentation>SingleLanguageUnitName</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__sl-data-3";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class SingleLanguageData::SlData3 -->
  <xsd:complexType name="SL-DATA-3" abstract="false" mixed="true">
    <xsd:annotation>
      <xsd:documentation>SingleLanguageUnitName</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__sl-data-3";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice minOccurs="0" maxOccurs="unbounded" />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class SingleLanguageData::SlData3p -->
  <xsd:group name="SL-DATA-3-P">
    <xsd:annotation>
      <xsd:documentation>SingleLanguageUnitNameVerbatim</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__sl-data-3p";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- attribute group for class SingleLanguageData::SlData3p -->
  <xsd:attributeGroup name="SL-DATA-3-P">
    <xsd:annotation>
      <xsd:documentation>SingleLanguageUnitNameVerbatim</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__sl-data-3p";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:attribute name="XMLSPACE" type="xsd:string" />
  </xsd:attributeGroup>
  <!-- complex type for class SingleLanguageData::SlData3p -->
  <xsd:complexType name="SL-DATA-3-P" abstract="false" mixed="true">
    <xsd:annotation>
      <xsd:documentation>SingleLanguageUnitNameVerbatim</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__sl-data-3p";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice minOccurs="0" maxOccurs="unbounded" />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:SL-DATA-3-P" />
  </xsd:complexType>
  <!-- element group for class SingleLanguageData::SlData4 -->
  <xsd:group name="SL-DATA-4">
    <xsd:annotation>
      <xsd:documentation>SingleLanguageLongName</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__sl-data-4";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class SingleLanguageData::SlData4 -->
  <xsd:complexType name="SL-DATA-4" abstract="false" mixed="true">
    <xsd:annotation>
      <xsd:documentation>SingleLanguageLongName</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__sl-data-4";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice minOccurs="0" maxOccurs="unbounded" />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class SingleLanguageData::SlData5 -->
  <xsd:group name="SL-DATA-5">
    <xsd:annotation>
      <xsd:documentation>SingleLanguageVerbatim</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__sl-data-5";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- attribute group for class SingleLanguageData::SlData5 -->
  <xsd:attributeGroup name="SL-DATA-5">
    <xsd:annotation>
      <xsd:documentation>SingleLanguageVerbatim</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__sl-data-5";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:attribute name="ALLOW-BREAK" type="xsd:string" />
    <xsd:attribute name="FLOAT" type="xsd:string" />
    <xsd:attribute name="HELP-ENTRY" type="xsd:string" />
    <xsd:attribute name="KEEP-WITH-PREVIOUS" type="xsd:string" />
    <xsd:attribute name="PGWIDE" type="xsd:string" />
    <xsd:attribute name="XMLSPACE" type="xsd:string" />
  </xsd:attributeGroup>
  <!-- complex type for class SingleLanguageData::SlData5 -->
  <xsd:complexType name="SL-DATA-5" abstract="false" mixed="true">
    <xsd:annotation>
      <xsd:documentation>SingleLanguageVerbatim</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__sl-data-5";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice minOccurs="0" maxOccurs="unbounded" />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:SL-DATA-5" />
  </xsd:complexType>
  <!-- element group for class SystemTemplate::SoftwareComposition -->
  <xsd:group name="SOFTWARE-COMPOSITION">
    <xsd:annotation>
      <xsd:documentation>The Top-level software composition, containing all software components in the System in a hierarchical structure. The contained ComponentPrototypes are fully specified by their ComponentTypes (including PortPrototypes, PortInterfaces, DataElementPrototypes, InternalBehavior etc.), and their ports are interconnected using ConnectorPrototypes.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SOFTWARE-COMPOSITION-TREF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMPOSITION-TYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SystemTemplate::SoftwareComposition -->
  <xsd:complexType name="SOFTWARE-COMPOSITION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The Top-level software composition, containing all software components in the System in a hierarchical structure. The contained ComponentPrototypes are fully specified by their ComponentTypes (including PortPrototypes, PortInterfaces, DataElementPrototypes, InternalBehavior etc.), and their ports are interconnected using ConnectorPrototypes.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:SOFTWARE-COMPOSITION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="SOFTWARE-COMPOSITION--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="SOFTWARE-COMPOSITION" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class ResourceConsumption::SoftwareContext -->
  <xsd:group name="SOFTWARE-CONTEXT">
    <xsd:annotation>
      <xsd:documentation>Specifes the context the software is whose ExecutionTime is provided.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="INPUT" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Specifies the input vector which is used to provide the ExecutionTime.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="STATE" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Specifies the state the software is in when the ExecutionTime is provided.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ResourceConsumption::SoftwareContext -->
  <xsd:complexType name="SOFTWARE-CONTEXT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specifes the context the software is whose ExecutionTime is provided.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SOFTWARE-CONTEXT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Fibex4Multiplatform::SourceIPduRef -->
  <xsd:group name="SOURCE-I-PDU-REF">
    <xsd:annotation>
      <xsd:documentation>Source destination of the referencing mapping.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DEFAULT-VALUE" type="AR:PDU-MAPPING-DEFAULT-VALUE" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SOURCE-I-PDU-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:I-PDU-TRIGGERING--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Fibex4Multiplatform::SourceIPduRef -->
  <xsd:complexType name="SOURCE-I-PDU-REF" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Source destination of the referencing mapping.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SOURCE-I-PDU-REF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class StackUsage::StackUsage -->
  <xsd:group name="STACK-USAGE">
    <xsd:annotation>
      <xsd:documentation>Describes the stack memory usage of a software.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ECU-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:ECU--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="HARDWARE-CONFIGURATION" type="AR:HARDWARE-CONFIGURATION" minOccurs="0" maxOccurs="1" />
      <xsd:element name="RUNNABLE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:EXECUTABLE-ENTITY--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SOFTWARE-CONTEXT" type="AR:SOFTWARE-CONTEXT" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- element group for class CoreCommunication::StaticPart -->
  <xsd:group name="STATIC-PART">
    <xsd:annotation>
      <xsd:documentation>Some parts/signals of the I-PDU may be the same regardless of the selector field. Such a part is called static part.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class CoreCommunication::StaticPart -->
  <xsd:complexType name="STATIC-PART" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Some parts/signals of the I-PDU may be the same regardless of the selector field. Such a part is called static part.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:MULTIPLEXED-PART" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Inlines::Std -->
  <xsd:group name="STD">
    <xsd:annotation>
      <xsd:documentation>Use &lt;std&gt; to reference external standards within a paragraph element.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__STD_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Inlines::Std -->
  <xsd:complexType name="STD" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Use &lt;std&gt; to reference external standards within a paragraph element.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__STD_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Constants::StringLiteral -->
  <xsd:group name="STRING-LITERAL">
    <xsd:annotation>
      <xsd:documentation>A constant string.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="VALUE" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The string itself.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Constants::StringLiteral -->
  <xsd:complexType name="STRING-LITERAL" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A constant string.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:DATA-PROTOTYPE" />
      <xsd:group ref="AR:STRING-LITERAL" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUCParameterDefTemplate::StringParamDef -->
  <xsd:group name="STRING-PARAM-DEF">
    <xsd:annotation>
      <xsd:documentation>Configuration parameter type for String.</xsd:documentation>
      <xsd:appinfo source="tags">xml.sequenceOffset="0"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DEFAULT-VALUE" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Default value of the string configuration parameter.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUCParameterDefTemplate::StringParamDef -->
  <xsd:complexType name="STRING-PARAM-DEF" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Configuration parameter type for String.</xsd:documentation>
      <xsd:appinfo source="tags">xml.sequenceOffset="0"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PARAM-CONF-MULTIPLICITY" />
      <xsd:group ref="AR:COMMON-CONFIGURATION-ATTRIBUTES" />
      <xsd:group ref="AR:CONFIG-PARAMETER" />
      <xsd:group ref="AR:STRING-PARAM-DEF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Datatypes::StringType -->
  <xsd:group name="STRING-TYPE">
    <xsd:annotation>
      <xsd:documentation>This represents a string of characters out of the character-set specified by the given encoding.
The maxNumberOfChars is the maximal number of characters which can be stored within the String. The actual number of bytes that is required to represent the string can be calculated out of maxNumberOfChars and the encoding:

bytes required to represent the string =
maxNumberOfChars * (max bytes per character using the given encoding) + 1 (terminating null)</xsd:documentation>
      <xsd:appinfo source="tags">java.instanceClass="java.lang.String"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ENCODING" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Specification of character encoding, e. g. ISO-8859-1.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MAX-NUMBER-OF-CHARS" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The maxNumberOfChars is the maximum number of characters that can be stored in the string.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Datatypes::StringType -->
  <xsd:complexType name="STRING-TYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This represents a string of characters out of the character-set specified by the given encoding.
The maxNumberOfChars is the maximal number of characters which can be stored within the String. The actual number of bytes that is required to represent the string can be calculated out of maxNumberOfChars and the encoding:

bytes required to represent the string =
maxNumberOfChars * (max bytes per character using the given encoding) + 1 (terminating null)</xsd:documentation>
      <xsd:appinfo source="tags">java.instanceClass="java.lang.String"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PRIMITIVE-TYPE" />
      <xsd:group ref="AR:STRING-TYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ECUCDescriptionTemplate::StringValue -->
  <xsd:group name="STRING-VALUE">
    <xsd:annotation>
      <xsd:documentation>Representing a configuration value of definition type StringParamDef</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="VALUE" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Stores the value of the String parameter.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ECUCDescriptionTemplate::StringValue -->
  <xsd:complexType name="STRING-VALUE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Representing a configuration value of definition type StringParamDef</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:PARAMETER-VALUE" />
      <xsd:group ref="AR:STRING-VALUE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class LinCommunication::SubstitutionFrame -->
  <xsd:group name="SUBSTITUTION-FRAME">
    <xsd:annotation>
      <xsd:documentation>A LIN specific extension of the common FRAME to enable the usual frame handling of a placeholder frame that is substituted at runtime. Substitution frame must not declare signal instances nor multiplexers.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SUBSTITUTED-FRAME-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SUBSTITUTED-FRAME-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:FRAME--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SUBSTITUTION-TYPE" type="AR:SUBSTITUTION-TYPE" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The type of substitution. Substitution frames can either be used for event triggered or for sporadic frames.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class LinCommunication::SubstitutionFrame -->
  <xsd:complexType name="SUBSTITUTION-FRAME" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A LIN specific extension of the common FRAME to enable the usual frame handling of a placeholder frame that is substituted at runtime. Substitution frame must not declare signal instances nor multiplexers.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:FRAME" />
      <xsd:group ref="AR:SUBSTITUTION-FRAME" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ServiceNeeds::SupervisedEntityNeeds -->
  <xsd:group name="SUPERVISED-ENTITY-NEEDS">
    <xsd:annotation>
      <xsd:documentation>Specifies the abstract needs on the configuration of the Watchdog Manager for one specific Supervised Entity (SE).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ACTIVATE-AT-START" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>true/false: supervision activation status of SE shall be enabled/disabled at start</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="ENABLE-DEACTIVATION" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>true: SWC shall be allowed to deactivate supervision of this SE
false: not</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="EXPECTED-ALIVE-CYCLE" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Expected cycle time of alive trigger of this SE (in seconds)</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MAX-ALIVE-CYCLE" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Maximum cycle time of alive trigger of this SE (in seconds)</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MIN-ALIVE-CYCLE" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Minimum cycle time of alive trigger of this SE (in seconds)</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="TOLERATED-FAILED-CYCLES" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Number of consecutive failed alive cycles for this SE which shall be tolerated until the supervision status of the SE is set to EXPIRED (see WdgM documentation for details). Note that this has to be recalculated w.r.t. the WdgMs own cycle time for ECU configuration.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ServiceNeeds::SupervisedEntityNeeds -->
  <xsd:complexType name="SUPERVISED-ENTITY-NEEDS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specifies the abstract needs on the configuration of the Watchdog Manager for one specific Supervised Entity (SE).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:SUPERVISED-ENTITY-NEEDS" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ProcessingUnit::SupportedDataType -->
  <xsd:group name="SUPPORTED-DATA-TYPE">
    <xsd:annotation>
      <xsd:documentation>This element provides a list of all supported data types and its according data sizes of the described PU.
Examples: Boolean (1, 8 bit), Bit String / Bit Field (x bit), Character (8, 16 bit), Signed / unsigned integer (8, 16, 24, 32, 48, 64 bit), Single / double float (56, 64 bit), Fixed point (24 bit), Fractional, Packed (two values handled in one register)</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SUPPORTED-DATA-SIZES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SUPPORTED-DATA-SIZE" type="xsd:integer" minOccurs="0" maxOccurs="unbounded">
              <xsd:annotation>
                <xsd:documentation>The size of the data type.
Unit: Bit</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ProcessingUnit::SupportedDataType -->
  <xsd:complexType name="SUPPORTED-DATA-TYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This element provides a list of all supported data types and its according data sizes of the described PU.
Examples: Boolean (1, 8 bit), Bit String / Bit Field (x bit), Character (8, 16 bit), Signed / unsigned integer (8, 16, 24, 32, 48, 64 bit), Single / double float (56, 64 bit), Fixed point (24 bit), Fractional, Packed (two values handled in one register)</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:SUPPORTED-DATA-TYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class BasicElements::SupportsSafety -->
  <xsd:group name="SUPPORTS-SAFETY">
    <xsd:annotation>
      <xsd:documentation>In the current version of the ECU Resource Template the element SupportsSafety is optional. A HW Element uses this element if it provides a safety mechanism, otherwise this element is missing in the description of the HW Element.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class BasicElements::SupportsSafety -->
  <xsd:complexType name="SUPPORTS-SAFETY" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>In the current version of the ECU Resource Template the element SupportsSafety is optional. A HW Element uses this element if it provides a safety mechanism, otherwise this element is missing in the description of the HW Element.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class BasicElements::SupportsSecurity -->
  <xsd:group name="SUPPORTS-SECURITY">
    <xsd:annotation>
      <xsd:documentation>The ECU Resource Template provides the element SupportsSecurity storing the information about the supported security mechanism.
In the current version of the ECU Resource Template the element SupportsSecurity is optional. A HW Element uses this element if it provides a security mechanism otherwise this element is missing in the description of the HW Element.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class BasicElements::SupportsSecurity -->
  <xsd:complexType name="SUPPORTS-SECURITY" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The ECU Resource Template provides the element SupportsSecurity storing the information about the supported security mechanism.
In the current version of the ECU Resource Template the element SupportsSecurity is optional. A HW Element uses this element if it provides a security mechanism otherwise this element is missing in the description of the HW Element.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class AuxillaryObjects::SwAddrMethod -->
  <xsd:group name="SW-ADDR-METHOD">
    <xsd:annotation>
      <xsd:documentation>Describes how variables or parameters are addressed in the ECU. It contains a description of the addressing process and a reference to the concerned CPU memory segment.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-ADDR-METHOD_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class AuxillaryObjects::SwAddrMethod -->
  <xsd:complexType name="SW-ADDR-METHOD" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Describes how variables or parameters are addressed in the ECU. It contains a description of the addressing process and a reference to the concerned CPU memory segment.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-ADDR-METHOD_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="SW-ADDR-METHOD--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="SW-ADDR-METHOD" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class DataDefProperties::SwArraysize -->
  <xsd:group name="SW-ARRAYSIZE">
    <xsd:annotation>
      <xsd:documentation>The existence of SwArraysize turns the containing element into a multidimensional object. It is then possible to create arrays of variables, parameters etc. SwArraysize should not be used to imitate stereotypes such as curves or maps since these structures are modeled as separate elements, refer to SwCalprmAxisSet for an SwCalprm. Apart from that any array can be created.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-ARRAYSIZE_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice>
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
        <xsd:element name="VF" type="AR:VF" minOccurs="0" maxOccurs="unbounded" />
        <xsd:element name="V" type="xsd:string" minOccurs="0" maxOccurs="unbounded">
          <xsd:annotation>
            <xsd:documentation>Use &lt;v&gt; to enter a numerical value.</xsd:documentation>
            <xsd:appinfo source="tags">xml.sequenceOffset="30";msr.id="SW-ARRAYSIZE_TYPE__V"</xsd:appinfo>
          </xsd:annotation>
        </xsd:element>
      </xsd:choice>
    </xsd:choice>
  </xsd:group>
  <!-- complex type for class DataDefProperties::SwArraysize -->
  <xsd:complexType name="SW-ARRAYSIZE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The existence of SwArraysize turns the containing element into a multidimensional object. It is then possible to create arrays of variables, parameters etc. SwArraysize should not be used to imitate stereotypes such as curves or maps since these structures are modeled as separate elements, refer to SwCalprmAxisSet for an SwCalprm. Apart from that any array can be created.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-ARRAYSIZE_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice minOccurs="0" maxOccurs="unbounded">
      <xsd:group ref="AR:SW-ARRAYSIZE" />
    </xsd:choice>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Axis::SwAxisGeneric -->
  <xsd:group name="SW-AXIS-GENERIC">
    <xsd:annotation>
      <xsd:documentation>This element defines an axis for the base points calculated in the ECU. The ECU is equipped with a fixed calculation algorithm. Parameters for the algorithm can be stored in the data component of the ECU.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-AXIS-GENERIC_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-AXIS-TYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SW-AXIS-TYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SW-GENERIC-AXIS-PARAMS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SW-GENERIC-AXIS-PARAM" type="AR:SW-GENERIC-AXIS-PARAM" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Axis::SwAxisGeneric -->
  <xsd:complexType name="SW-AXIS-GENERIC" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This element defines an axis for the base points calculated in the ECU. The ECU is equipped with a fixed calculation algorithm. Parameters for the algorithm can be stored in the data component of the ECU.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-AXIS-GENERIC_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SW-AXIS-GENERIC" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Axis::SwAxisGrouped -->
  <xsd:group name="SW-AXIS-GROUPED">
    <xsd:annotation>
      <xsd:documentation>An SwAxisGrouped is an axis which is shared between multiple calibration parameters.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-AXIS-GROUPED_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:choice minOccurs="0" maxOccurs="1">
        <xsd:group ref="AR:AR-CALPRM-REF" />
        <xsd:group ref="AR:SW-CALPRM-REF" />
      </xsd:choice>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Axis::SwAxisGrouped -->
  <xsd:complexType name="SW-AXIS-GROUPED" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>An SwAxisGrouped is an axis which is shared between multiple calibration parameters.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-AXIS-GROUPED_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SW-AXIS-GROUPED" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Axis::SwAxisIndividual -->
  <xsd:group name="SW-AXIS-INDIVIDUAL">
    <xsd:annotation>
      <xsd:documentation>This element describes an axis integrated into a parameter (field etc.). The integration makes this individual to each parameter. The so-called grouped axis represents the counterpart to this. It is conceived as an independent parameter (see class SwAxisGrouped).

The attributes swVariableRefs, compuMethod and unit can exist in parallel, although physically speaking, only one is practical. This parallelism introduces flexibility into the development process, as axes can be described purely physically, without a conversion formula being available.
The following priority exists:
* swVariableRefs
* compuMethod
* unit</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-AXIS-INDIVIDUAL_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-VARIABLE-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:group ref="AR:DATA-PROTOTYPE-REF" />
            <xsd:group ref="AR:RECORD-ELEMENT-REF" />
            <xsd:group ref="AR:SW-VARIABLE-REF-MSR" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="COMPU-METHOD-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMPU-METHOD--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="UNIT-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:UNIT--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SW-MAX-AXIS-POINTS" type="AR:VF" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SW-MIN-AXIS-POINTS" type="AR:VF" minOccurs="0" maxOccurs="1" />
      <xsd:element name="DATA-CONSTR-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:DATA-CONSTR--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SW-AXIS-GENERIC" type="AR:SW-AXIS-GENERIC" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Axis::SwAxisIndividual -->
  <xsd:complexType name="SW-AXIS-INDIVIDUAL" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This element describes an axis integrated into a parameter (field etc.). The integration makes this individual to each parameter. The so-called grouped axis represents the counterpart to this. It is conceived as an independent parameter (see class SwAxisGrouped).

The attributes swVariableRefs, compuMethod and unit can exist in parallel, although physically speaking, only one is practical. This parallelism introduces flexibility into the development process, as axes can be described purely physically, without a conversion formula being available.
The following priority exists:
* swVariableRefs
* compuMethod
* unit</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-AXIS-INDIVIDUAL_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SW-AXIS-INDIVIDUAL" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Axis::SwAxisType -->
  <xsd:group name="SW-AXIS-TYPE">
    <xsd:annotation>
      <xsd:documentation>Stands for a specific axis calculation strategy. No formal specification is given, due to the fact that it is possible to use arbitrary algorithms for calculating axis-points. Instead, the algorithm is described verbally but the parameters are specified formally with respect to their names and constraints. As a result, SwAxisType mainly reserves appropriate keywords.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-AXIS-TYPE_TYPE";msr.isNamespace=" TeamMembe SwGenericAxisPara"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-GENERIC-AXIS-PARAM-TYPES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SW-GENERIC-AXIS-PARAM-TYPE" type="AR:SW-GENERIC-AXIS-PARAM-TYPE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Axis::SwAxisType -->
  <xsd:complexType name="SW-AXIS-TYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Stands for a specific axis calculation strategy. No formal specification is given, due to the fact that it is possible to use arbitrary algorithms for calculating axis-points. Instead, the algorithm is described verbally but the parameters are specified formally with respect to their names and constraints. As a result, SwAxisType mainly reserves appropriate keywords.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-AXIS-TYPE_TYPE";msr.isNamespace=" TeamMembe SwGenericAxisPara"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:SW-AXIS-TYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="SW-AXIS-TYPE--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="SW-AXIS-TYPE" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class BaseTypes::SwBaseType -->
  <xsd:group name="SW-BASE-TYPE">
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class BaseTypes::SwBaseType -->
  <xsd:complexType name="SW-BASE-TYPE" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:BASE-TYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="SW-BASE-TYPE--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="SW-BASE-TYPE" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class DataDefProperties::SwBitRepresentation -->
  <xsd:group name="SW-BIT-REPRESENTATION">
    <xsd:annotation>
      <xsd:documentation>Description of the structure of a bit variable: Comprises of the bitPosition in a memory object (e.g. swHostVariable, which stands parallel to swBitRepresentation) and the numberOfBits . In this way, interrelated memory areas can be described. Non-related memory areas are not supported.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-BIT-REPRESENTATION_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="BIT-POSITION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>If the "bit data object" is hosted witin another data object (e.g. if the memory can be accessed via byte as well as bit adress), this attribute specifies the position of the data object. The count starts at zero (0).</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="SW-BIT-REPRESENTATION_TYPE__BIT-POSITION";msr.tbdString="true";xml.sequenceOffset="20"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="NUMBER-OF-BITS" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Number of bits allocated by a "bit data object" within its host data object.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="SW-BIT-REPRESENTATION_TYPE__NUMBER-OF-BITS";msr.tbdString="true";xml.sequenceOffset="30"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DataDefProperties::SwBitRepresentation -->
  <xsd:complexType name="SW-BIT-REPRESENTATION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Description of the structure of a bit variable: Comprises of the bitPosition in a memory object (e.g. swHostVariable, which stands parallel to swBitRepresentation) and the numberOfBits . In this way, interrelated memory areas can be described. Non-related memory areas are not supported.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-BIT-REPRESENTATION_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SW-BIT-REPRESENTATION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class CalibrationParameter::SwCalprm -->
  <xsd:group name="SW-CALPRM">
    <xsd:annotation>
      <xsd:documentation>This element specifies the properties of calibration parameters in the ECU. Calibration parameters are adapted to the vehicle in the calibration phase. Variables are quite the opposite, they are manipulated during the normal operation of the software.

The category of the calprm  is used to specify particular shapes of calibration parameters (e.g. the categories as defined by ASAM MDX)</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-CALPRM_TYPE";msr.isNamespace=" TeamMembe SwGenericAxisPara SwCalpr"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-ARRAYSIZE" type="AR:SW-ARRAYSIZE" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SW-DATA-DEF-PROPS" type="AR:SW-DATA-DEF-PROPS" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SW-CALPRMS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SW-CALPRM" type="AR:SW-CALPRM" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class CalibrationParameter::SwCalprm -->
  <xsd:complexType name="SW-CALPRM" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This element specifies the properties of calibration parameters in the ECU. Calibration parameters are adapted to the vehicle in the calibration phase. Variables are quite the opposite, they are manipulated during the normal operation of the software.

The category of the calprm  is used to specify particular shapes of calibration parameters (e.g. the categories as defined by ASAM MDX)</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-CALPRM_TYPE";msr.isNamespace=" TeamMembe SwGenericAxisPara SwCalpr"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:SW-CALPRM" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="SW-CALPRM--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="SW-CALPRM" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class CalibrationParameter::SwCalprmAxis -->
  <xsd:group name="SW-CALPRM-AXIS">
    <xsd:annotation>
      <xsd:documentation>This element specifies an individual input parameter axis (abscissa).</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-CALPRM-AXIS_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-AXIS-INDEX" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Describes the index referring to the axis currently described, for which the contents is specified.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="SW-CALPRM-AXIS_TYPE__SW-AXIS-INDEX";msr.tbdString="true";xml.sequenceOffset="20"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="CATEGORY" type="AR:CALPRM-AXIS-CATEGORY-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This property specifies the category of a particular axis.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="SW-CALPRM-AXIS_TYPE__CATEGORY";msr.tbdString="true";xml.sequenceOffset="30"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:choice minOccurs="0" maxOccurs="1">
        <xsd:group ref="AR:SW-CALPRM-AXIS-COMMON-AXIS" />
        <xsd:group ref="AR:SW-CALPRM-AXIS-INDIVIDUAL-AXIS" />
      </xsd:choice>
      <xsd:element name="SW-CALIBRATION-ACCESS" type="AR:SW-CALIBRATION-ACCESS-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Describes the applicability of parameters and variables.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="SW-CALPRM-AXIS_TYPE__SW-CALIBRATION-ACCESS";msr.tbdString="true";xml.sequenceOffset="90"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="DISPLAY-FORMAT" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This property specifies how the axis values shall be displayed e.g. in documents or in measurement and calibration tools.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="SW-CALPRM-AXIS_TYPE__DISPLAY-FORMAT";msr.tbdString="true";xml.sequenceOffset="100"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="BASE-TYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SW-BASE-TYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class CalibrationParameter::SwCalprmAxis -->
  <xsd:complexType name="SW-CALPRM-AXIS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This element specifies an individual input parameter axis (abscissa).</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-CALPRM-AXIS_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SW-CALPRM-AXIS" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class CalibrationParameter::SwCalprmAxisCommonAxis -->
  <xsd:group name="SW-CALPRM-AXIS-COMMON-AXIS">
    <xsd:annotation>
      <xsd:documentation>Container for the properties of a grouped axis.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="special__SW-CALPRM-AXIS_commonAxis_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-AXIS-GROUPED" type="AR:SW-AXIS-GROUPED" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class CalibrationParameter::SwCalprmAxisCommonAxis -->
  <xsd:complexType name="SW-CALPRM-AXIS-COMMON-AXIS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Container for the properties of a grouped axis.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="special__SW-CALPRM-AXIS_commonAxis_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SW-CALPRM-AXIS-COMMON-AXIS" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class CalibrationParameter::SwCalprmAxisIndividualAxis -->
  <xsd:group name="SW-CALPRM-AXIS-INDIVIDUAL-AXIS">
    <xsd:annotation>
      <xsd:documentation>Container for the properties of an individual axis.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="special__SW-CALPRM-AXIS_individualAxis_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-AXIS-INDIVIDUAL" type="AR:SW-AXIS-INDIVIDUAL" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class CalibrationParameter::SwCalprmAxisIndividualAxis -->
  <xsd:complexType name="SW-CALPRM-AXIS-INDIVIDUAL-AXIS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Container for the properties of an individual axis.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="special__SW-CALPRM-AXIS_individualAxis_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SW-CALPRM-AXIS-INDIVIDUAL-AXIS" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class CalibrationParameter::SwCalprmAxisSet -->
  <xsd:group name="SW-CALPRM-AXIS-SET">
    <xsd:annotation>
      <xsd:documentation>This element specifies the input parameter axes (abscissas) of parameters (and variables, if these are used adaptively).</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-CALPRM-AXIS-SET_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-CALPRM-AXIS" type="AR:SW-CALPRM-AXIS" minOccurs="0" maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class CalibrationParameter::SwCalprmAxisSet -->
  <xsd:complexType name="SW-CALPRM-AXIS-SET" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This element specifies the input parameter axes (abscissas) of parameters (and variables, if these are used adaptively).</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-CALPRM-AXIS-SET_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SW-CALPRM-AXIS-SET" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class CalibrationParameter::SwCalprmAxisTypeProps -->
  <xsd:group name="SW-CALPRM-AXIS-TYPE-PROPS">
    <xsd:annotation>
      <xsd:documentation>Base class for the type of the calibration axis. This provides the particular model of the specialization. If the specialization would be the directly from SwCalPrmAxis, the sequence of common properties and the specializes ones would be different.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="special__SW-CALPRM-AXIS_axis_TYPE";msr.isOrgroup="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- element group for class SwClass::SwCalprmImpl -->
  <xsd:group name="SW-CALPRM-IMPL">
    <xsd:annotation>
      <xsd:documentation>This element describes the implementation details of a class attribute which manifests itself as a calibration parameter.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-CALPRM-IMPL_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-CALPRM-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SW-CALPRM-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SW-DATA-DEF-PROPS" type="AR:SW-DATA-DEF-PROPS" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SwClass::SwCalprmImpl -->
  <xsd:complexType name="SW-CALPRM-IMPL" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This element describes the implementation details of a class attribute which manifests itself as a calibration parameter.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-CALPRM-IMPL_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SW-CALPRM-IMPL" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class SwClass::SwCalprmPrototype -->
  <xsd:group name="SW-CALPRM-PROTOTYPE">
    <xsd:annotation>
      <xsd:documentation>This element describes the prototype declaration of a class attribute, which is used as a calibration parameter.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-CALPRM-PROTOTYPE_TYPE";msr.isCond="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-DATA-DEF-PROPS" type="AR:SW-DATA-DEF-PROPS" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SwClass::SwCalprmPrototype -->
  <xsd:complexType name="SW-CALPRM-PROTOTYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This element describes the prototype declaration of a class attribute, which is used as a calibration parameter.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-CALPRM-PROTOTYPE_TYPE";msr.isCond="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:SW-CALPRM-PROTOTYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="SW-CALPRM-PROTOTYPE--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="SW-CALPRM-PROTOTYPE" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class DatadictionaryProxies::SwCalprmRef -->
  <xsd:group name="SW-CALPRM-REF">
    <xsd:annotation>
      <xsd:documentation>Specialization of SwCalprmRefProxy which contains a reference to a calibration parameter in the MSR style.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-CALPRM-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SW-CALPRM--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DatadictionaryProxies::SwCalprmRef -->
  <xsd:complexType name="SW-CALPRM-REF" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specialization of SwCalprmRefProxy which contains a reference to a calibration parameter in the MSR style.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SW-CALPRM-REF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class DatadictionaryProxies::SwCalprmRefProxy -->
  <xsd:group name="SW-CALPRM-REF-PROXY">
    <xsd:annotation>
      <xsd:documentation>Parent class for several kinds of references to a calibration parameter.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class DatadictionaryProxies::SwCalprmRefProxy -->
  <xsd:complexType name="SW-CALPRM-REF-PROXY" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Parent class for several kinds of references to a calibration parameter.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class CalibrationParameter::SwCalprmValueAxisLabels -->
  <xsd:group name="SW-CALPRM-VALUE-AXIS-LABELS">
    <xsd:annotation>
      <xsd:documentation>This element is used to record textual descriptions of axis values and is contained in ASAP1.4, for reasons of backward compatibility.

In new systems, the application should be implemented via conversion formulae.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__SW-CALPRM-VALUE-AXIS-LABELS_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class CalibrationParameter::SwCalprmValueAxisLabels -->
  <xsd:complexType name="SW-CALPRM-VALUE-AXIS-LABELS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This element is used to record textual descriptions of axis values and is contained in ASAP1.4, for reasons of backward compatibility.

In new systems, the application should be implemented via conversion formulae.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__SW-CALPRM-VALUE-AXIS-LABELS_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class SwClass::SwClass -->
  <xsd:group name="SW-CLASS">
    <xsd:annotation>
      <xsd:documentation>An SwClass stands for the type of a software entity, which defines data properties and (optionally) associated methods and can have multiple instances. There are various use cases. For example it can be used to define the implementation of variables and parameters originating in the instantiation of this class. A SwClass can optionally contain 1 to n SwClassAttrImpls, with each representing a particular class implemetation. A SwClass contains 0 to n SwClassAttr attributes, which is merely the list of data objects to be established by the instantiation of the class. This is one of the reasons why an SwInstanceTree is necessary. Furthermore it contains 0 to n SwClassMethods, each of which representing a particular class method. T

Classes are instantiated within the data dictionaries, either globally or within a feature. Therefore an SwClassInstance in a DataDictionary contains a reference to an SwClass. This represents a particular instance of an SwClass. The contents of this element replaces the contents of the referenced SwClass, thus defining the particular implementation.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-CLASS_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-CLASS-ATTR" type="AR:SW-CLASS-ATTR" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SW-CLASS-ATTR-IMPLS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SW-CLASS-ATTR-IMPL" type="AR:SW-CLASS-ATTR-IMPL" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SW-DATA-DEF-PROPS" type="AR:SW-DATA-DEF-PROPS" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SwClass::SwClass -->
  <xsd:complexType name="SW-CLASS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>An SwClass stands for the type of a software entity, which defines data properties and (optionally) associated methods and can have multiple instances. There are various use cases. For example it can be used to define the implementation of variables and parameters originating in the instantiation of this class. A SwClass can optionally contain 1 to n SwClassAttrImpls, with each representing a particular class implemetation. A SwClass contains 0 to n SwClassAttr attributes, which is merely the list of data objects to be established by the instantiation of the class. This is one of the reasons why an SwInstanceTree is necessary. Furthermore it contains 0 to n SwClassMethods, each of which representing a particular class method. T

Classes are instantiated within the data dictionaries, either globally or within a feature. Therefore an SwClassInstance in a DataDictionary contains a reference to an SwClass. This represents a particular instance of an SwClass. The contents of this element replaces the contents of the referenced SwClass, thus defining the particular implementation.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-CLASS_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:SW-CLASS" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="SW-CLASS--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="SW-CLASS" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class SwClass::SwClassAttr -->
  <xsd:group name="SW-CLASS-ATTR">
    <xsd:annotation>
      <xsd:documentation>Defines the object-oriented class-attributes containing the prototypes: &lt;swVariablePrototypes&gt; which denote attributes within the classes that are variables, &lt;swCalprmPrototypes&gt; which denote attributes within the classes that are calibration parameters , &lt;SW-SERVICE-PROTOTYPES&gt; which denote attributes within the classes that are services and &lt;swClassPrototypes&gt; which denote attributes within the classes that are class instances themselves.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-CLASS-ATTR_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-VARIABLE-PROTOTYPES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SW-VARIABLE-PROTOTYPE" type="AR:SW-VARIABLE-PROTOTYPE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SW-CALPRM-PROTOTYPES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SW-CALPRM-PROTOTYPE" type="AR:SW-CALPRM-PROTOTYPE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SwClass::SwClassAttr -->
  <xsd:complexType name="SW-CLASS-ATTR" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Defines the object-oriented class-attributes containing the prototypes: &lt;swVariablePrototypes&gt; which denote attributes within the classes that are variables, &lt;swCalprmPrototypes&gt; which denote attributes within the classes that are calibration parameters , &lt;SW-SERVICE-PROTOTYPES&gt; which denote attributes within the classes that are services and &lt;swClassPrototypes&gt; which denote attributes within the classes that are class instances themselves.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-CLASS-ATTR_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SW-CLASS-ATTR" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class SwClass::SwClassAttrImpl -->
  <xsd:group name="SW-CLASS-ATTR-IMPL">
    <xsd:annotation>
      <xsd:documentation>Defines the object-oriented class-attributes: SW-VARIABLE-IMPLS which implement attributes that are variables, SW-CALPRM-IMPLS which implement attributes that are calibration parameters and SW-CLASS-IMPLS which implement attributes that are class instances themselves.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-CLASS-ATTR-IMPL_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-DATA-DEF-PROPS" type="AR:SW-DATA-DEF-PROPS" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SW-VARIABLE-IMPLS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SW-VARIABLE-IMPL" type="AR:SW-VARIABLE-IMPL" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SW-CALPRM-IMPLS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SW-CALPRM-IMPL" type="AR:SW-CALPRM-IMPL" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SwClass::SwClassAttrImpl -->
  <xsd:complexType name="SW-CLASS-ATTR-IMPL" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Defines the object-oriented class-attributes: SW-VARIABLE-IMPLS which implement attributes that are variables, SW-CALPRM-IMPLS which implement attributes that are calibration parameters and SW-CLASS-IMPLS which implement attributes that are class instances themselves.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-CLASS-ATTR-IMPL_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:SW-CLASS-ATTR-IMPL" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="SW-CLASS-ATTR-IMPL--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="SW-CLASS-ATTR-IMPL" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class SwClass::SwClassAttrInstanceImpl -->
  <xsd:group name="SW-CLASS-ATTR-INSTANCE-IMPL">
    <xsd:annotation>
      <xsd:documentation>&lt;swClassAttrInstanceImpl&gt; is used to create an instance from a model (Models are defined with SW-CLASS) where some specifications shall be changed / overwritten. This implementation will then be a instance specific implementation (Classes are usually only implemented under &lt;swClassImpls&gt;).</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-CLASS-ATTR-INSTANCE-IMPL_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-VARIABLE-IMPLS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SW-VARIABLE-IMPL" type="AR:SW-VARIABLE-IMPL" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SW-CALPRM-IMPLS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SW-CALPRM-IMPL" type="AR:SW-CALPRM-IMPL" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SW-CLASS-IMPLS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SW-CLASS-IMPL" type="AR:SW-CLASS-IMPL" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SwClass::SwClassAttrInstanceImpl -->
  <xsd:complexType name="SW-CLASS-ATTR-INSTANCE-IMPL" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>&lt;swClassAttrInstanceImpl&gt; is used to create an instance from a model (Models are defined with SW-CLASS) where some specifications shall be changed / overwritten. This implementation will then be a instance specific implementation (Classes are usually only implemented under &lt;swClassImpls&gt;).</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-CLASS-ATTR-INSTANCE-IMPL_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SW-CLASS-ATTR-INSTANCE-IMPL" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class SwClass::SwClassImpl -->
  <xsd:group name="SW-CLASS-IMPL">
    <xsd:annotation>
      <xsd:documentation>This element describes the implementation details of a class attribute which manifests itself as a class.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-CLASS-IMPL_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-CLASS-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SW-CLASS-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SW-DATA-DEF-PROPS" type="AR:SW-DATA-DEF-PROPS" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SwClass::SwClassImpl -->
  <xsd:complexType name="SW-CLASS-IMPL" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This element describes the implementation details of a class attribute which manifests itself as a class.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-CLASS-IMPL_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SW-CLASS-IMPL" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class SwClass::SwClassInstance -->
  <xsd:group name="SW-CLASS-INSTANCE">
    <xsd:annotation>
      <xsd:documentation>Defines the particular instantiation of a referenced &lt;swClass&gt; .</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-CLASS-INSTANCE_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-DATA-DEF-PROPS" type="AR:SW-DATA-DEF-PROPS" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SW-CLASS-ATTR-INSTANCE-IMPL" type="AR:SW-CLASS-ATTR-INSTANCE-IMPL" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SwClass::SwClassInstance -->
  <xsd:complexType name="SW-CLASS-INSTANCE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Defines the particular instantiation of a referenced &lt;swClass&gt; .</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-CLASS-INSTANCE_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:SW-CLASS-INSTANCE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class SwClass::SwClassPrototype -->
  <xsd:group name="SW-CLASS-PROTOTYPE">
    <xsd:annotation>
      <xsd:documentation>This element describes the prototype declaration of a class attribute, which appears in the form of a class.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-CLASS-PROTOTYPE_TYPE";msr.isCond="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class SwClass::SwClassPrototype -->
  <xsd:complexType name="SW-CLASS-PROTOTYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This element describes the prototype declaration of a class attribute, which appears in the form of a class.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-CLASS-PROTOTYPE_TYPE";msr.isCond="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="SW-CLASS-PROTOTYPE--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="SW-CLASS-PROTOTYPE" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class AuxillaryObjects::SwCodeSyntax -->
  <xsd:group name="SW-CODE-SYNTAX">
    <xsd:annotation>
      <xsd:documentation>SwCodeSyntax objects fix the representation of data objects, e.g. variables and parameters, in the program source file. These code syntax objects are defined centrally in SwCodeSyntaxes and are connected to data objects by means of SwCodeSyntaxRef.

The principle role of this element is the declaration of keywords (in the subelement ShortName) for the code generation procedure. The process itself is given a verbal description (in SwCodeSyntaxDesc) rather than a formal one. This approach was adopted as the number of possible code syntax schematics is relatively small. A complete formal description would create unnecessary work.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__SW-CODE-SYNTAX_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class AuxillaryObjects::SwCodeSyntax -->
  <xsd:complexType name="SW-CODE-SYNTAX" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>SwCodeSyntax objects fix the representation of data objects, e.g. variables and parameters, in the program source file. These code syntax objects are defined centrally in SwCodeSyntaxes and are connected to data objects by means of SwCodeSyntaxRef.

The principle role of this element is the declaration of keywords (in the subelement ShortName) for the code generation procedure. The process itself is given a verbal description (in SwCodeSyntaxDesc) rather than a formal one. This approach was adopted as the number of possible code syntax schematics is relatively small. A complete formal description would create unnecessary work.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__SW-CODE-SYNTAX_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="SW-CODE-SYNTAX--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="SW-CODE-SYNTAX" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class _instanceRef::SwCompToEcuMapping_component -->
  <xsd:group name="SW-COMP-TO-ECU-MAPPING--COMPONENT-IREF">
    <xsd:sequence>
      <xsd:element name="SOFTWARE-COMPOSITION-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SOFTWARE-COMPOSITION--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="COMPONENT-PROTOTYPE-REF" minOccurs="0" maxOccurs="unbounded">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMPONENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="TARGET-COMPONENT-PROTOTYPE-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMPONENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::SwCompToEcuMapping_component -->
  <xsd:complexType name="SW-COMP-TO-ECU-MAPPING--COMPONENT-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:SW-COMP-TO-ECU-MAPPING--COMPONENT-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class _instanceRef::SwCompToImplMapping_component -->
  <xsd:group name="SW-COMP-TO-IMPL-MAPPING--COMPONENT-IREF">
    <xsd:sequence>
      <xsd:element name="SOFTWARE-COMPOSITION-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SOFTWARE-COMPOSITION--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="COMPONENT-PROTOTYPE-REF" minOccurs="0" maxOccurs="unbounded">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMPONENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="TARGET-COMPONENT-PROTOTYPE-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMPONENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::SwCompToImplMapping_component -->
  <xsd:complexType name="SW-COMP-TO-IMPL-MAPPING--COMPONENT-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:SW-COMP-TO-IMPL-MAPPING--COMPONENT-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class DataDefProperties::SwComparisonVariables -->
  <xsd:group name="SW-COMPARISON-VARIABLES">
    <xsd:annotation>
      <xsd:documentation>These variables can be used to display the value of a variable on the value axis of a calibration parameter (characteristic), that is currently displayed in the MCD-System. The purpose is to compare the appropriate result from the calibration parameter in question, with a value being calculated or taken from a sensor (the comparison variable).

The sole purpose of this comparison-variable is to serve the calibration process.

Screen representation of comparison variable
     Vs |              |
                        |              |
                        |              |
                     V _|______________|______________
                        |         /----|------
                        |  /-----/     |
                        | /            |
                        |/             |
                        |--------------|--------------
                                       tx          tmot
                
                        tx: current temperature
                        V:  current speed as shown in the MCD system for comparison:
                            this is the SwComparisonVariable
                        Vs: speed characteristic over temperature
                        tmot: motor temperature</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__SW-COMPARISON-VARIABLES_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
        <xsd:group ref="AR:DATA-PROTOTYPE-REF" />
        <xsd:group ref="AR:RECORD-ELEMENT-REF" />
        <xsd:group ref="AR:SW-VARIABLE-REF-MSR" />
      </xsd:choice>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DataDefProperties::SwComparisonVariables -->
  <xsd:complexType name="SW-COMPARISON-VARIABLES" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>These variables can be used to display the value of a variable on the value axis of a calibration parameter (characteristic), that is currently displayed in the MCD-System. The purpose is to compare the appropriate result from the calibration parameter in question, with a value being calculated or taken from a sensor (the comparison variable).

The sole purpose of this comparison-variable is to serve the calibration process.

Screen representation of comparison variable
     Vs |              |
                        |              |
                        |              |
                     V _|______________|______________
                        |         /----|------
                        |  /-----/     |
                        | /            |
                        |/             |
                        |--------------|--------------
                                       tx          tmot
                
                        tx: current temperature
                        V:  current speed as shown in the MCD system for comparison:
                            this is the SwComparisonVariable
                        Vs: speed characteristic over temperature
                        tmot: motor temperature</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__SW-COMPARISON-VARIABLES_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SW-COMPARISON-VARIABLES" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class GlobalConstraints::SwConstrObjects -->
  <xsd:group name="SW-CONSTR-OBJECTS">
    <xsd:annotation>
      <xsd:documentation>Parameters or variables can reference plausibility checks. The assignment of data to &lt;swConstrObjects&gt; makes the reverse direction possible.

In this way for example plausibility libraries stored in external files can be latched beneath the previous element &lt;SW-DATA-CONSTRS&gt; -element.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__SW-CONSTR-OBJECTS_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class GlobalConstraints::SwConstrObjects -->
  <xsd:complexType name="SW-CONSTR-OBJECTS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Parameters or variables can reference plausibility checks. The assignment of data to &lt;swConstrObjects&gt; makes the reverse direction possible.

In this way for example plausibility libraries stored in external files can be latched beneath the previous element &lt;SW-DATA-CONSTRS&gt; -element.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__SW-CONSTR-OBJECTS_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice minOccurs="0" maxOccurs="unbounded" />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class DataDefProperties::SwDataDefProps -->
  <xsd:group name="SW-DATA-DEF-PROPS">
    <xsd:annotation>
      <xsd:documentation>This class is a collection of properties relevant for data objects under various aspects. One could consider this class as a "pattern of inheritance by aggregation". The properties can be applied to all objects of all classes in which SwDataDefProps is agrregated.

Note that not all of the attributes or associated elements are useful all of the time. Hence, the process definition (e.g. expressed with an OCL or a Document Control Instance) MSR-DCI has the task of implementing limitations.

SwDataDefProps covers various aspects:

* Structure of the data element, is it a single value, a curve, or a map, but also the recordLayouts which specify, how such elements are mapped/converted to the DataTypes in the programming language (or in Autosar). This is mainly expressed by properties like swRecordLayout and swCalprmAxisSet 

* Implementation policy, mainly expressed by swImplPolicy, swVariableAccessImplPolicy, swAddrMethod 

* Access policy for the MDC system, mainly expressed by swCalibrationAccess 

* Semantics of the data element, mainly expressed by compuMethod and/or unit, dataConstr 

* Code generation policy provided by swCodeSyntax</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-DATA-DEF-PROPS_TYPE";msr.isCond="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ANNOTATIONS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="ANNOTATION" type="AR:ANNOTATION" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SW-ADDR-METHOD-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SW-ADDR-METHOD--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="BASE-TYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SW-BASE-TYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SW-BIT-REPRESENTATION" type="AR:SW-BIT-REPRESENTATION" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SW-CALIBRATION-ACCESS" type="AR:SW-CALIBRATION-ACCESS-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Specifies the read or write access by MCD tools for this data object.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="SW-DATA-DEF-PROPS_TYPE__SW-CALIBRATION-ACCESS";msr.tbdString="true";xml.sequenceOffset="70"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SW-VALUE-BLOCK-SIZE" type="AR:SW-ARRAYSIZE" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SW-CALPRM-AXIS-SET" type="AR:SW-CALPRM-AXIS-SET" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SW-TEXT-PROPS" type="AR:SW-TEXT-PROPS" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SW-CLASS-ATTR-IMPL-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SW-CLASS-ATTR-IMPL--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SW-CLASS-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SW-CLASS--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SW-CODE-SYNTAX-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SW-CODE-SYNTAX--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="COMPU-METHOD-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMPU-METHOD--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="DATA-CONSTR-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:DATA-CONSTR--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SW-DATA-DEPENDENCY" type="AR:SW-DATA-DEPENDENCY" minOccurs="0" maxOccurs="1" />
      <xsd:element name="DISPLAY-FORMAT" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This property describes how a number is to be rendered e.g. in documents or in a measurement and calibration system.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="SW-DATA-DEF-PROPS_TYPE__DISPLAY-FORMAT";msr.tbdString="true";xml.sequenceOffset="210"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="INVALID-VALUE" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="1">
            <xsd:element name="BOOLEAN-LITERAL" type="AR:BOOLEAN-LITERAL" />
            <xsd:element name="CHAR-LITERAL" type="AR:CHAR-LITERAL" />
            <xsd:element name="INTEGER-LITERAL" type="AR:INTEGER-LITERAL" />
            <xsd:element name="OPAQUE-LITERAL" type="AR:OPAQUE-LITERAL" />
            <xsd:element name="REAL-LITERAL" type="AR:REAL-LITERAL" />
            <xsd:element name="STRING-LITERAL" type="AR:STRING-LITERAL" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SW-HOST-VARIABLE" type="AR:SW-VARIABLE-REF" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SW-IMPL-POLICY" type="AR:SW-IMPL-POLICY-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Implementation policy for this data object.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="SW-DATA-DEF-PROPS_TYPE__SW-IMPL-POLICY";msr.tbdString="true";xml.sequenceOffset="230"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SW-POINTER" type="AR:SW-POINTER" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SW-RECORD-LAYOUT-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SW-RECORD-LAYOUT--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="UNIT-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:UNIT--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SW-VARIABLE-ACCESS-IMPL-POLICY" type="AR:SW-VARIABLE-ACCESS-IMPL-POLICY-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>In case of a swImplPolicy set to "message" the access policy can be refined here.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="SW-DATA-DEF-PROPS_TYPE__SW-VARIABLE-ACCESS-IMPL-POLICY";msr.tbdString="true";xml.sequenceOffset="390"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DataDefProperties::SwDataDefProps -->
  <xsd:complexType name="SW-DATA-DEF-PROPS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This class is a collection of properties relevant for data objects under various aspects. One could consider this class as a "pattern of inheritance by aggregation". The properties can be applied to all objects of all classes in which SwDataDefProps is agrregated.

Note that not all of the attributes or associated elements are useful all of the time. Hence, the process definition (e.g. expressed with an OCL or a Document Control Instance) MSR-DCI has the task of implementing limitations.

SwDataDefProps covers various aspects:

* Structure of the data element, is it a single value, a curve, or a map, but also the recordLayouts which specify, how such elements are mapped/converted to the DataTypes in the programming language (or in Autosar). This is mainly expressed by properties like swRecordLayout and swCalprmAxisSet 

* Implementation policy, mainly expressed by swImplPolicy, swVariableAccessImplPolicy, swAddrMethod 

* Access policy for the MDC system, mainly expressed by swCalibrationAccess 

* Semantics of the data element, mainly expressed by compuMethod and/or unit, dataConstr 

* Code generation policy provided by swCodeSyntax</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-DATA-DEF-PROPS_TYPE";msr.isCond="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SW-DATA-DEF-PROPS" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class DataDefProperties::SwDataDependency -->
  <xsd:group name="SW-DATA-DEPENDENCY">
    <xsd:annotation>
      <xsd:documentation>This element describes the interdependencies of data objects, e.g. variables and parameters. It can be used for example to treat virtual parameters.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__SW-DATA-DEPENDENCY_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-DATA-DEPENDENCY-FORMULA" type="AR:COMPU-GENERIC-MATH" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SW-DATA-DEPENDENCY-ARGS" type="AR:SW-DATA-DEPENDENCY-ARGS" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DataDefProperties::SwDataDependency -->
  <xsd:complexType name="SW-DATA-DEPENDENCY" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This element describes the interdependencies of data objects, e.g. variables and parameters. It can be used for example to treat virtual parameters.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__SW-DATA-DEPENDENCY_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SW-DATA-DEPENDENCY" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class DataDefProperties::SwDataDependencyArgs -->
  <xsd:group name="SW-DATA-DEPENDENCY-ARGS">
    <xsd:annotation>
      <xsd:documentation>This element specifies the elements used in a SwDataDependency.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__SW-DATA-DEPENDENCY-ARGS_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice>
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
        <xsd:choice minOccurs="0" maxOccurs="unbounded">
          <xsd:group ref="AR:AR-CALPRM-REF" />
          <xsd:group ref="AR:SW-CALPRM-REF" />
        </xsd:choice>
        <xsd:choice minOccurs="0" maxOccurs="unbounded">
          <xsd:group ref="AR:DATA-PROTOTYPE-REF" />
          <xsd:group ref="AR:RECORD-ELEMENT-REF" />
          <xsd:group ref="AR:SW-VARIABLE-REF-MSR" />
        </xsd:choice>
      </xsd:choice>
    </xsd:choice>
  </xsd:group>
  <!-- complex type for class DataDefProperties::SwDataDependencyArgs -->
  <xsd:complexType name="SW-DATA-DEPENDENCY-ARGS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This element specifies the elements used in a SwDataDependency.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__SW-DATA-DEPENDENCY-ARGS_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice minOccurs="0" maxOccurs="unbounded">
      <xsd:group ref="AR:SW-DATA-DEPENDENCY-ARGS" />
    </xsd:choice>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Axis::SwGenericAxisParam -->
  <xsd:group name="SW-GENERIC-AXIS-PARAM">
    <xsd:annotation>
      <xsd:documentation>This element describes a specific parameter of a generic axis. The name of the parameter is defined through a reference to a parameter type defined on a corresponding axis type.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-GENERIC-AXIS-PARAM_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-GENERIC-AXIS-PARAM-TYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SW-GENERIC-AXIS-PARAM-TYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:choice minOccurs="0" maxOccurs="1">
        <xsd:group ref="AR:SW-GENERIC-AXIS-PARAM-VALUE" />
      </xsd:choice>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Axis::SwGenericAxisParam -->
  <xsd:complexType name="SW-GENERIC-AXIS-PARAM" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This element describes a specific parameter of a generic axis. The name of the parameter is defined through a reference to a parameter type defined on a corresponding axis type.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-GENERIC-AXIS-PARAM_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SW-GENERIC-AXIS-PARAM" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Axis::SwGenericAxisParamType -->
  <xsd:group name="SW-GENERIC-AXIS-PARAM-TYPE">
    <xsd:annotation>
      <xsd:documentation>This element describes a generic axis parameter type, namely:

* Plausibility checks can be specified via dataConstr.

* Textual description (desc), as a formal description is not of any use, due to the large variety of possibilities.

* If this parameter contains structures, these can be simulated through the recursive use of swGenericAxisParamTypes.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-GENERIC-AXIS-PARAM-TYPE_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Axis::SwGenericAxisParamType -->
  <xsd:complexType name="SW-GENERIC-AXIS-PARAM-TYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This element describes a generic axis parameter type, namely:

* Plausibility checks can be specified via dataConstr.

* Textual description (desc), as a formal description is not of any use, due to the large variety of possibilities.

* If this parameter contains structures, these can be simulated through the recursive use of swGenericAxisParamTypes.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-GENERIC-AXIS-PARAM-TYPE_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="SW-GENERIC-AXIS-PARAM-TYPE--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="SW-GENERIC-AXIS-PARAM-TYPE" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class DataDefProperties::SwGenericAxisParamValue -->
  <xsd:group name="SW-GENERIC-AXIS-PARAM-VALUE">
    <xsd:annotation>
      <xsd:documentation>Contains the value for the generic axis parameter.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="special__SW-GENERIC-AXIS-PARAM-VALUE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice>
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
        <xsd:element name="VF" type="AR:VF" minOccurs="0" maxOccurs="unbounded" />
        <xsd:element name="V" type="xsd:string" minOccurs="0" maxOccurs="unbounded">
          <xsd:annotation>
            <xsd:documentation>Use &lt;v&gt; to enter a numerical value.</xsd:documentation>
            <xsd:appinfo source="tags">xml.sequenceOffset="50";msr.id="SW-GENERIC-AXIS-PARAM-VALUE__V"</xsd:appinfo>
          </xsd:annotation>
        </xsd:element>
      </xsd:choice>
    </xsd:choice>
  </xsd:group>
  <!-- complex type for class DataDefProperties::SwGenericAxisParamValue -->
  <xsd:complexType name="SW-GENERIC-AXIS-PARAM-VALUE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Contains the value for the generic axis parameter.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="special__SW-GENERIC-AXIS-PARAM-VALUE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice minOccurs="0" maxOccurs="unbounded">
      <xsd:group ref="AR:SW-GENERIC-AXIS-PARAM-VALUE" />
    </xsd:choice>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class DataDefProperties::SwPointer -->
  <xsd:group name="SW-POINTER">
    <xsd:annotation>
      <xsd:documentation>This element indicates, that the data object (which is specified by the containing element) is a reference to another data object. The properties of the referred data object are described in the swDataDefProps contained by the SwPointer .</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-POINTER_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-DATA-DEF-PROPS" type="AR:SW-DATA-DEF-PROPS" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DataDefProperties::SwPointer -->
  <xsd:complexType name="SW-POINTER" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This element indicates, that the data object (which is specified by the containing element) is a reference to another data object. The properties of the referred data object are described in the swDataDefProps contained by the SwPointer .</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-POINTER_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SW-POINTER" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class AuxillaryObjects::SwRecordLayout -->
  <xsd:group name="SW-RECORD-LAYOUT">
    <xsd:annotation>
      <xsd:documentation>Defines how the data objects (variables, calibration parameters etc.) are to be stored in the ECU memory. As an example, this definition specifies the sequence of axis points in the ECU memory. Iterations through axis values are stored within the subelements swRecordLayoutGroup . These subelements might be stored nested to support multidimensional data objects.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-RECORD-LAYOUT_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-RECORD-LAYOUT-GROUP" type="AR:SW-RECORD-LAYOUT-GROUP" minOccurs="0" maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class AuxillaryObjects::SwRecordLayout -->
  <xsd:complexType name="SW-RECORD-LAYOUT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Defines how the data objects (variables, calibration parameters etc.) are to be stored in the ECU memory. As an example, this definition specifies the sequence of axis points in the ECU memory. Iterations through axis values are stored within the subelements swRecordLayoutGroup . These subelements might be stored nested to support multidimensional data objects.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-RECORD-LAYOUT_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:SW-RECORD-LAYOUT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="SW-RECORD-LAYOUT--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="SW-RECORD-LAYOUT" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class AuxillaryObjects::SwRecordLayoutGroup -->
  <xsd:group name="SW-RECORD-LAYOUT-GROUP">
    <xsd:annotation>
      <xsd:documentation>Specifies how a record layout is set up. Using SwRecordLayoutGroup it recursively models iterations through axis values. The subelement swRecordLayoutGroupContentType may reference other SwRecordLayouts, SwRecordLayoutVs and SwRecordLayoutGroups for the modeled record layout.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-RECORD-LAYOUT-GROUP_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-RECORD-LAYOUT-GROUP-AXIS" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The contents of this element specifies the axis number within a record layout group.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="SW-RECORD-LAYOUT-GROUP_TYPE__SW-RECORD-LAYOUT-GROUP-AXIS";msr.tbdString="true";xml.sequenceOffset="30"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SW-RECORD-LAYOUT-GROUP-INDEX" type="AR:IDENTIFIER" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This element attributes a symbolic name to the iterator of the superimposed record layout group. This can be referenced as a loop index beneath superimposed or subsequent SwRecordLayoutV elements.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="SW-RECORD-LAYOUT-GROUP_TYPE__SW-RECORD-LAYOUT-GROUP-INDEX";msr.tbdString="true";xml.sequenceOffset="40"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SW-RECORD-LAYOUT-GROUP-FROM" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This element specifies the iterator index for the point in the axis from which a record layout group is commenced. Negative values are also possible, i.e. the value -4 counts from the fourth value from the end.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="SW-RECORD-LAYOUT-GROUP_TYPE__SW-RECORD-LAYOUT-GROUP-FROM";msr.tbdString="true";xml.sequenceOffset="60"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SW-RECORD-LAYOUT-GROUP-TO" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This element specifies the iterator index for a point in the axis up to which iteration for a record layout group takes place. Negative values are also possible, i.e. the value -4 counts up to the fourth value from the end.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="SW-RECORD-LAYOUT-GROUP_TYPE__SW-RECORD-LAYOUT-GROUP-TO";msr.tbdString="true";xml.sequenceOffset="70"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SW-RECORD-LAYOUT-GROUP-STEP" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This element specifies the step width for the iterator index, which is used for a record layout group .</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="SW-RECORD-LAYOUT-GROUP_TYPE__SW-RECORD-LAYOUT-GROUP-STEP";msr.tbdString="true";xml.sequenceOffset="80"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SW-RECORD-LAYOUT-COMPONENT" type="AR:IDENTIFIER" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This element is used to denote the component to which the group in question applies. Thus, the record layout supports structured objects. This secures independence from the sequence of components, because they can be referred to via name.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="SW-RECORD-LAYOUT-GROUP_TYPE__SW-RECORD-LAYOUT-COMPONENT";msr.tbdString="true";xml.sequenceOffset="90"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:choice minOccurs="0" maxOccurs="1">
        <xsd:group ref="AR:SW-RECORD-LAYOUT-GROUP-CONTENT" />
      </xsd:choice>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class AuxillaryObjects::SwRecordLayoutGroup -->
  <xsd:complexType name="SW-RECORD-LAYOUT-GROUP" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specifies how a record layout is set up. Using SwRecordLayoutGroup it recursively models iterations through axis values. The subelement swRecordLayoutGroupContentType may reference other SwRecordLayouts, SwRecordLayoutVs and SwRecordLayoutGroups for the modeled record layout.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-RECORD-LAYOUT-GROUP_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SW-RECORD-LAYOUT-GROUP" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class AuxillaryObjects::SwRecordLayoutGroupContent -->
  <xsd:group name="SW-RECORD-LAYOUT-GROUP-CONTENT">
    <xsd:annotation>
      <xsd:documentation>This is the contents of a RecordLaoyut which is inserted for every iteration. Note that since this is atpMixed, multiple properties can be inserted for each iteration.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="special__SW-RECORD-LAYOUT-GROUP_content_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice>
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
        <xsd:element name="SW-RECORD-LAYOUT-REF" minOccurs="0" maxOccurs="unbounded">
          <xsd:complexType>
            <xsd:simpleContent>
              <xsd:extension base="AR:REF">
                <xsd:attribute name="DEST" type="AR:SW-RECORD-LAYOUT--SUBTYPES-ENUM" use="required" />
              </xsd:extension>
            </xsd:simpleContent>
          </xsd:complexType>
        </xsd:element>
        <xsd:element name="SW-RECORD-LAYOUT-V" type="AR:SW-RECORD-LAYOUT-V" minOccurs="0" maxOccurs="unbounded" />
        <xsd:element name="SW-RECORD-LAYOUT-GROUP" type="AR:SW-RECORD-LAYOUT-GROUP" minOccurs="0" maxOccurs="unbounded" />
      </xsd:choice>
    </xsd:choice>
  </xsd:group>
  <!-- complex type for class AuxillaryObjects::SwRecordLayoutGroupContent -->
  <xsd:complexType name="SW-RECORD-LAYOUT-GROUP-CONTENT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This is the contents of a RecordLaoyut which is inserted for every iteration. Note that since this is atpMixed, multiple properties can be inserted for each iteration.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="special__SW-RECORD-LAYOUT-GROUP_content_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice minOccurs="0" maxOccurs="unbounded">
      <xsd:group ref="AR:SW-RECORD-LAYOUT-GROUP-CONTENT" />
    </xsd:choice>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class AuxillaryObjects::SwRecordLayoutV -->
  <xsd:group name="SW-RECORD-LAYOUT-V">
    <xsd:annotation>
      <xsd:documentation>This element specifies which values are stored for the current SwRecordLayoutGroup. If no baseType is present, the SwBaseType referenced initially in the father element SwRecordLayoutGroup is valid. The specification of swRecordLayoutVAxis gives the axis of the values to be stored in accordance with the current record layout SwRecordLayoutGroup. In swRecordLayoutVProp you are able to specify the type of values that are to be stored, e.g. number or value. Under swRecordLayoutVIndex, the symbolic values of the axes can be given, for which the value given under swRecordLayoutVProp is iterated. These symbolic values relate to the values given in swRecordLayoutGroupIndex.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-RECORD-LAYOUT-V_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="BASE-TYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SW-BASE-TYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SW-RECORD-LAYOUT-V-AXIS" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This attribute specifies the axis from which the value properties are used.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="SW-RECORD-LAYOUT-V_TYPE__SW-RECORD-LAYOUT-V-AXIS";msr.tbdString="true";xml.sequenceOffset="40"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SW-RECORD-LAYOUT-V-PROP" type="xsd:NMTOKEN" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The contents of this attribute describes the type of values to be stored in the record.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="SW-RECORD-LAYOUT-V_TYPE__SW-RECORD-LAYOUT-V-PROP";msr.tbdString="true";xml.sequenceOffset="50"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SW-RECORD-LAYOUT-V-INDEX" type="AR:IDENTIFIER" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The symbolic value for iteration, or the symbolic values separated by white-spaces, refer to the symbolic values given in swRecordLayoutGroupIndex . The iterators are processed from left to right, in such a manner that they symbolize the loop index from the outside to the inside.

An error has occurred if a parameter references a record layout which contains an swRecordLayoutVIndex with more components than the number of parameter axes.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="SW-RECORD-LAYOUT-V_TYPE__SW-RECORD-LAYOUT-V-INDEX";msr.tbdString="true";xml.sequenceOffset="60"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SW-RECORD-LAYOUT-V-FIX-VALUE" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This attribute specifies the filler character for the current record layout, in the form of hex digits. The element present parallel to this in swRecordLayoutVProp must therefore have the contents FILL.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="SW-RECORD-LAYOUT-V_TYPE__SW-RECORD-LAYOUT-V-FIX-VALUE";msr.tbdString="true";xml.sequenceOffset="80"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SW-RECORD-LAYOUT-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SW-RECORD-LAYOUT--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class AuxillaryObjects::SwRecordLayoutV -->
  <xsd:complexType name="SW-RECORD-LAYOUT-V" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This element specifies which values are stored for the current SwRecordLayoutGroup. If no baseType is present, the SwBaseType referenced initially in the father element SwRecordLayoutGroup is valid. The specification of swRecordLayoutVAxis gives the axis of the values to be stored in accordance with the current record layout SwRecordLayoutGroup. In swRecordLayoutVProp you are able to specify the type of values that are to be stored, e.g. number or value. Under swRecordLayoutVIndex, the symbolic values of the axes can be given, for which the value given under swRecordLayoutVProp is iterated. These symbolic values relate to the values given in swRecordLayoutGroupIndex.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-RECORD-LAYOUT-V_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SW-RECORD-LAYOUT-V" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class AuxillaryObjects::SwRelatedConstrs -->
  <xsd:group name="SW-RELATED-CONSTRS">
    <xsd:annotation>
      <xsd:documentation>This element describes plausibility rules that go beyond the individual data object. E.g. the overrun shut-off engine speed must not be higher than the maximum engine speed. This plausibility rule is defined in exactly the same way as the contexts and dependencies of virtual characteristic variables and variables.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__SW-RELATED-CONSTRS_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class AuxillaryObjects::SwRelatedConstrs -->
  <xsd:complexType name="SW-RELATED-CONSTRS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This element describes plausibility rules that go beyond the individual data object. E.g. the overrun shut-off engine speed must not be higher than the maximum engine speed. This plausibility rule is defined in exactly the same way as the contexts and dependencies of virtual characteristic variables and variables.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__SW-RELATED-CONSTRS_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class DataDefProperties::SwSemaphore -->
  <xsd:group name="SW-SEMAPHORE">
    <xsd:annotation>
      <xsd:documentation>This element denotes a variable which servers as a semaphore for a particular resource which is specified in the surrounding data object, e.g. SwDataDefProps.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__SW-SEMAPHORE_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:choice minOccurs="0" maxOccurs="1">
        <xsd:group ref="AR:DATA-PROTOTYPE-REF" />
        <xsd:group ref="AR:RECORD-ELEMENT-REF" />
        <xsd:group ref="AR:SW-VARIABLE-REF-MSR" />
      </xsd:choice>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DataDefProperties::SwSemaphore -->
  <xsd:complexType name="SW-SEMAPHORE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This element denotes a variable which servers as a semaphore for a particular resource which is specified in the surrounding data object, e.g. SwDataDefProps.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__SW-SEMAPHORE_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SW-SEMAPHORE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ServiceProcessTask::SwService -->
  <xsd:group name="SW-SERVICE">
    <xsd:annotation>
      <xsd:documentation>Describes a procedure call in the software. Depending on the usage, the description can contain properties of the function call (signature) and of its implementation as well.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-SERVICE_TYPE";msr.isNamespace=" TeamMembe SwGenericAxisPara SwCalpr SwFeatureVarian SwInstanc SwInstanc SwServiceArg SwServiceRetur"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-SERVICE-RETURN" type="AR:SW-SERVICE-ARG" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SW-SERVICE-ARGS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SW-SERVICE-ARG" type="AR:SW-SERVICE-ARG" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SW-SERVICE-ACCESSED-ELEMENT-SETS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SW-SERVICE-ACCESSED-ELEMENT-SET" type="AR:SW-SERVICE-ACCESSED-ELEMENT-SET" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SW-SERVICE-PROPS" type="AR:SW-SERVICE-PROPS" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ServiceProcessTask::SwService -->
  <xsd:complexType name="SW-SERVICE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Describes a procedure call in the software. Depending on the usage, the description can contain properties of the function call (signature) and of its implementation as well.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-SERVICE_TYPE";msr.isNamespace=" TeamMembe SwGenericAxisPara SwCalpr SwFeatureVarian SwInstanc SwInstanc SwServiceArg SwServiceRetur"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:SW-SERVICE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ServiceProcessTask::SwServiceAccessedElementSet -->
  <xsd:group name="SW-SERVICE-ACCESSED-ELEMENT-SET">
    <xsd:annotation>
      <xsd:documentation>This element is similar to &lt;SW-INTERFACE-ACCESSED-ELEMENT-SET&gt; but applies to &lt;SW-SERVICE&gt; . To some extent it is now possible to epress the access to interface elements

* within a software component represented by ( &lt;swFeature&gt; ), which is the mainly a functional view

* within a process represented by &lt;SW-SERVICE&gt;, which is more the dynamic view. These processes are part of compontents (represented by ownership and imports, which makes it possible to retrieve the functional view from the dynamic view (but ** vice versa).</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__SW-SERVICE-ACCESSED-ELEMENT-SET_TYPE";msr.isCond="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ServiceProcessTask::SwServiceAccessedElementSet -->
  <xsd:complexType name="SW-SERVICE-ACCESSED-ELEMENT-SET" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This element is similar to &lt;SW-INTERFACE-ACCESSED-ELEMENT-SET&gt; but applies to &lt;SW-SERVICE&gt; . To some extent it is now possible to epress the access to interface elements

* within a software component represented by ( &lt;swFeature&gt; ), which is the mainly a functional view

* within a process represented by &lt;SW-SERVICE&gt;, which is more the dynamic view. These processes are part of compontents (represented by ownership and imports, which makes it possible to retrieve the functional view from the dynamic view (but ** vice versa).</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__SW-SERVICE-ACCESSED-ELEMENT-SET_TYPE";msr.isCond="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ServiceProcessTask::SwServiceArg -->
  <xsd:group name="SW-SERVICE-ARG">
    <xsd:annotation>
      <xsd:documentation>Specifies the properties of a data object exchanged during the call of an SwService, e.g. an argument or a return value.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-SERVICE-ARG_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-ARRAYSIZE" type="AR:SW-ARRAYSIZE" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SW-DATA-DEF-PROPS" type="AR:SW-DATA-DEF-PROPS" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ServiceProcessTask::SwServiceArg -->
  <xsd:complexType name="SW-SERVICE-ARG" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specifies the properties of a data object exchanged during the call of an SwService, e.g. an argument or a return value.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-SERVICE-ARG_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:SW-SERVICE-ARG" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ServiceProcessTask::SwServiceImpl -->
  <xsd:group name="SW-SERVICE-IMPL">
    <xsd:annotation>
      <xsd:documentation>tbd</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-SERVICE-IMPL_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ServiceProcessTask::SwServiceImpl -->
  <xsd:complexType name="SW-SERVICE-IMPL" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>tbd</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-SERVICE-IMPL_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ServiceProcessTask::SwServiceProps -->
  <xsd:group name="SW-SERVICE-PROPS">
    <xsd:annotation>
      <xsd:documentation>Describes certain properties of the service implementation.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-SERVICE-PROPS_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-SERVICE-REENTRANCE" type="AR:SW-SERVICE-REENTRANCE-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Reentrance enables or prohibits the service to be invoked again, before the service has
finished and delivered a result. If the attribute is missing, then reentrance is prohibited.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="SW-SERVICE-PROPS_TYPE__SW-SERVICE-REENTRANCE";msr.tbdString="true";xml.sequenceOffset="20"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SW-IMPL-POLICY" type="AR:SW-SERVICE-IMPL-POLICY-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Enables the specification of an implementation strategy. In this way, the direction of the implementation to come, can be specified in advance in an earlier phase.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="SW-SERVICE-PROPS_TYPE__SW-IMPL-POLICY";msr.tbdString="true";xml.sequenceOffset="40"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ServiceProcessTask::SwServiceProps -->
  <xsd:complexType name="SW-SERVICE-PROPS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Describes certain properties of the service implementation.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-SERVICE-PROPS_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SW-SERVICE-PROPS" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class SwClass::SwServicePrototype -->
  <xsd:group name="SW-SERVICE-PROTOTYPE">
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class SwClass::SwServicePrototype -->
  <xsd:complexType name="SW-SERVICE-PROTOTYPE" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class DataDefProperties::SwTextProps -->
  <xsd:group name="SW-TEXT-PROPS">
    <xsd:annotation>
      <xsd:documentation>The properties specific for a textual calibration parameter / variable.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__SW-TEXT-PROPS_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-MAX-TEXT-SIZE" type="AR:VF" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SW-FILL-CHARACTER" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Filler character for text parameter to pad up to the maximum length &lt;SwMaxTextSize&gt;.
The filler character for texts which are shorter than the maximum permitted text length.
The value will be interpreted according to the encoding specified in the associated base type of the data object., e.g. 0x30 (hex) represents the ASCII character zero as filler character and 0 (dez) represents an end of string as filler character.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="SW-TEXT-PROPS_TYPE__SW-FILL-CHARACTER";msr.tbdString="true";xml.sequenceOffset="40"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DataDefProperties::SwTextProps -->
  <xsd:complexType name="SW-TEXT-PROPS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The properties specific for a textual calibration parameter / variable.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__SW-TEXT-PROPS_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SW-TEXT-PROPS" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Variable::SwVariable -->
  <xsd:group name="SW-VARIABLE">
    <xsd:annotation>
      <xsd:documentation>This element specifies a variable in the ECU. Variables are not adapted to the vehicle in the calibration phase. They are manipulated during the normal operation of the software.

Sub-structures are simulated through the aggregation of  further swVariables .</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-VARIABLE_TYPE";msr.isNamespace=" TeamMembe SwGenericAxisPara SwCalpr SwFeatureVarian SwInstanc SwInstanc SwServiceArg SwServiceRetur SwVariabl"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-ARRAYSIZE" type="AR:SW-ARRAYSIZE" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SW-DATA-DEF-PROPS" type="AR:SW-DATA-DEF-PROPS" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SW-VARIABLES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SW-VARIABLE" type="AR:SW-VARIABLE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Variable::SwVariable -->
  <xsd:complexType name="SW-VARIABLE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This element specifies a variable in the ECU. Variables are not adapted to the vehicle in the calibration phase. They are manipulated during the normal operation of the software.

Sub-structures are simulated through the aggregation of  further swVariables .</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-VARIABLE_TYPE";msr.isNamespace=" TeamMembe SwGenericAxisPara SwCalpr SwFeatureVarian SwInstanc SwInstanc SwServiceArg SwServiceRetur SwVariabl"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:SW-VARIABLE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="SW-VARIABLE--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="SW-VARIABLE" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class SwClass::SwVariableImpl -->
  <xsd:group name="SW-VARIABLE-IMPL">
    <xsd:annotation>
      <xsd:documentation>This element describes the implementation details of a class attribute which manifests itself as a variable.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-VARIABLE-IMPL_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-VARIABLE-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SW-VARIABLE-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SW-DATA-DEF-PROPS" type="AR:SW-DATA-DEF-PROPS" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SwClass::SwVariableImpl -->
  <xsd:complexType name="SW-VARIABLE-IMPL" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This element describes the implementation details of a class attribute which manifests itself as a variable.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-VARIABLE-IMPL_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SW-VARIABLE-IMPL" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class SwClass::SwVariablePrototype -->
  <xsd:group name="SW-VARIABLE-PROTOTYPE">
    <xsd:annotation>
      <xsd:documentation>This element describes the prototype declaration of a class attribute, which appears in the form of a variable.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-VARIABLE-PROTOTYPE_TYPE";msr.isCond="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-DATA-DEF-PROPS" type="AR:SW-DATA-DEF-PROPS" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SwClass::SwVariablePrototype -->
  <xsd:complexType name="SW-VARIABLE-PROTOTYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This element describes the prototype declaration of a class attribute, which appears in the form of a variable.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-VARIABLE-PROTOTYPE_TYPE";msr.isCond="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:SW-VARIABLE-PROTOTYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="SW-VARIABLE-PROTOTYPE--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="SW-VARIABLE-PROTOTYPE" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class DataDefProperties::SwVariableRef -->
  <xsd:group name="SW-VARIABLE-REF">
    <xsd:annotation>
      <xsd:documentation>This class establishes a reference to a variable. It is mainly introduced by the reverse engineering tool.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-VARIABLE-REF_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:choice minOccurs="0" maxOccurs="1">
        <xsd:group ref="AR:DATA-PROTOTYPE-REF" />
        <xsd:group ref="AR:RECORD-ELEMENT-REF" />
        <xsd:group ref="AR:SW-VARIABLE-REF-MSR" />
      </xsd:choice>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DataDefProperties::SwVariableRef -->
  <xsd:complexType name="SW-VARIABLE-REF" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This class establishes a reference to a variable. It is mainly introduced by the reverse engineering tool.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__SW-VARIABLE-REF_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SW-VARIABLE-REF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class DatadictionaryProxies::SwVariableRefMsr -->
  <xsd:group name="SW-VARIABLE-REF-MSR">
    <xsd:annotation>
      <xsd:documentation>Specialization of SwVariableRefProxy which is expressed by a SwVariable.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SW-VARIABLE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SW-VARIABLE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class DatadictionaryProxies::SwVariableRefMsr -->
  <xsd:complexType name="SW-VARIABLE-REF-MSR" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specialization of SwVariableRefProxy which is expressed by a SwVariable.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SW-VARIABLE-REF-MSR" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class DatadictionaryProxies::SwVariableRefProxy -->
  <xsd:group name="SW-VARIABLE-REF-PROXY">
    <xsd:annotation>
      <xsd:documentation>Parent class for several kinds of references to a variable.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- element group for class ServiceMapping::SwcComMgrUserNeeds -->
  <xsd:group name="SWC-COM-MGR-USER-NEEDS">
    <xsd:annotation>
      <xsd:documentation>Specialization of the ComMgrUserNeeds for the case it is owned by a SoftwareComponentType.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CALLBACK-PORTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="ROLE-BASED-P-PORT-ASSIGNMENT" type="AR:ROLE-BASED-P-PORT-ASSIGNMENT" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SERVICE-CALL-PORTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="ROLE-BASED-R-PORT-ASSIGNMENT" type="AR:ROLE-BASED-R-PORT-ASSIGNMENT" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ServiceMapping::SwcComMgrUserNeeds -->
  <xsd:complexType name="SWC-COM-MGR-USER-NEEDS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specialization of the ComMgrUserNeeds for the case it is owned by a SoftwareComponentType.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:COM-MGR-USER-NEEDS" />
      <xsd:group ref="AR:SWC-COM-MGR-USER-NEEDS" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ServiceMapping::SwcDiagnosticCommunicationNeeds -->
  <xsd:group name="SWC-DIAGNOSTIC-COMMUNICATION-NEEDS">
    <xsd:annotation>
      <xsd:documentation>Specialization of the DiagnosticCommunicationNeeds for the case it is owned by a SoftwareComponentType.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CALLBACK-PORTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="ROLE-BASED-P-PORT-ASSIGNMENT" type="AR:ROLE-BASED-P-PORT-ASSIGNMENT" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SERVICE-CALL-PORT" type="AR:ROLE-BASED-R-PORT-ASSIGNMENT" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ServiceMapping::SwcDiagnosticCommunicationNeeds -->
  <xsd:complexType name="SWC-DIAGNOSTIC-COMMUNICATION-NEEDS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specialization of the DiagnosticCommunicationNeeds for the case it is owned by a SoftwareComponentType.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:SWC-DIAGNOSTIC-COMMUNICATION-NEEDS" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ServiceMapping::SwcDiagnosticEventNeeds -->
  <xsd:group name="SWC-DIAGNOSTIC-EVENT-NEEDS">
    <xsd:annotation>
      <xsd:documentation>Specialization of the DiagnosticEventNeeds for the case it is owned by a SoftwareComponentType. It allows to navigate to all ports associated with this diagnostic event.

Note that there may be further ports to communicate with the DEM Service (e.g. setting the operation cycle type)  which are not included in this mapping because they are independent of the diagnisic event.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CALLBACK-PORTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="ROLE-BASED-P-PORT-ASSIGNMENT" type="AR:ROLE-BASED-P-PORT-ASSIGNMENT" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SERVICE-CALL-PORTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="ROLE-BASED-R-PORT-ASSIGNMENT" type="AR:ROLE-BASED-R-PORT-ASSIGNMENT" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ServiceMapping::SwcDiagnosticEventNeeds -->
  <xsd:complexType name="SWC-DIAGNOSTIC-EVENT-NEEDS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specialization of the DiagnosticEventNeeds for the case it is owned by a SoftwareComponentType. It allows to navigate to all ports associated with this diagnostic event.

Note that there may be further ports to communicate with the DEM Service (e.g. setting the operation cycle type)  which are not included in this mapping because they are independent of the diagnisic event.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:SWC-DIAGNOSTIC-EVENT-NEEDS" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ServiceMapping::SwcEcuStateMgrUserNeeds -->
  <xsd:group name="SWC-ECU-STATE-MGR-USER-NEEDS">
    <xsd:annotation>
      <xsd:documentation>Specialization of the EcuStateMgrUserNeeds for the case it is owned  by a SoftwareComponentType. It allows to navigate to all the ports which are used by this component to put requests for this "user".

Note that there are further ports which a component can use to obtain various information from the ECU State Manager. These ports are not included in the mapping because they will be implemented as pure function calls which can be called independently of being a certain"user".

Note that the AUTOSAR ECU State Manager does not support callbacks to services provided by users of ECU State Manger, therefore there is not property "callbackPort".</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SERVICE-CALL-PORTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="ROLE-BASED-R-PORT-ASSIGNMENT" type="AR:ROLE-BASED-R-PORT-ASSIGNMENT" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ServiceMapping::SwcEcuStateMgrUserNeeds -->
  <xsd:complexType name="SWC-ECU-STATE-MGR-USER-NEEDS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specialization of the EcuStateMgrUserNeeds for the case it is owned  by a SoftwareComponentType. It allows to navigate to all the ports which are used by this component to put requests for this "user".

Note that there are further ports which a component can use to obtain various information from the ECU State Manager. These ports are not included in the mapping because they will be implemented as pure function calls which can be called independently of being a certain"user".

Note that the AUTOSAR ECU State Manager does not support callbacks to services provided by users of ECU State Manger, therefore there is not property "callbackPort".</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:SWC-ECU-STATE-MGR-USER-NEEDS" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ServiceMapping::SwcFunctionInhibitionNeeds -->
  <xsd:group name="SWC-FUNCTION-INHIBITION-NEEDS">
    <xsd:annotation>
      <xsd:documentation>Specialization of the FunctionInhibitionNeeds for the case it is owned by a SoftwareComponentType.

Note that the Function Inhibit Manger does not provide callbacks to services provided by software components. Therefoer there is no property "callbackPort".</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SERVICE-CALL-PORTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="ROLE-BASED-R-PORT-ASSIGNMENT" type="AR:ROLE-BASED-R-PORT-ASSIGNMENT" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ServiceMapping::SwcFunctionInhibitionNeeds -->
  <xsd:complexType name="SWC-FUNCTION-INHIBITION-NEEDS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specialization of the FunctionInhibitionNeeds for the case it is owned by a SoftwareComponentType.

Note that the Function Inhibit Manger does not provide callbacks to services provided by software components. Therefoer there is no property "callbackPort".</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:SWC-FUNCTION-INHIBITION-NEEDS" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class SwcImplementation::SwcImplementation -->
  <xsd:group name="SWC-IMPLEMENTATION">
    <xsd:sequence>
      <xsd:element name="BEHAVIOR-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:INTERNAL-BEHAVIOR--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PER-INSTANCE-MEMORY-SIZES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="PER-INSTANCE-MEMORY-SIZE" type="AR:PER-INSTANCE-MEMORY-SIZE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="REQUIRED-RTE-VENDOR" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Identify a specific RTE vendor. This information is potentially important at the time of integrating (in particular: linking) the application code with the RTE. The semantics is that (if the association exists) the corresponding code has been created to fit to the vendor-mode RTE provided by this specific vendor. Attempting to integrate the code with another RTE generated in vendor mode is in general not possible.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SwcImplementation::SwcImplementation -->
  <xsd:complexType name="SWC-IMPLEMENTATION" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:IMPLEMENTATION" />
      <xsd:group ref="AR:SWC-IMPLEMENTATION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="SWC-IMPLEMENTATION--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="SWC-IMPLEMENTATION" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class ServiceMapping::SwcNvBlockNeeds -->
  <xsd:group name="SWC-NV-BLOCK-NEEDS">
    <xsd:annotation>
      <xsd:documentation>Specialization of NvBlockNeeds for the case it is owned by a SoftwareComponentType. It specifies all mappings to elements of the SoftwareComponentType concerning a single Nv block. Note that the mapping is the same for all instances of a SoftwareComponentType (because the code depends on it).

Note that the block size is not specified here because
- it can be derived from the associated PerInstanceMemory size (implementatiion specific) in case of implicit storage/restauration of the block
- if can be derived from the array size passed via the correponding operations of the Service Interface in case of explicit storage/restauration of the block</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CALL-BACK-PORTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="ROLE-BASED-P-PORT-ASSIGNMENT" type="AR:ROLE-BASED-P-PORT-ASSIGNMENT" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="DEFAULT-BLOCK-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:CALPRM-ELEMENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="MIRROR-BLOCK-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:PER-INSTANCE-MEMORY--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SERVICE-CALL-PORTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="ROLE-BASED-R-PORT-ASSIGNMENT" type="AR:ROLE-BASED-R-PORT-ASSIGNMENT" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ServiceMapping::SwcNvBlockNeeds -->
  <xsd:complexType name="SWC-NV-BLOCK-NEEDS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specialization of NvBlockNeeds for the case it is owned by a SoftwareComponentType. It specifies all mappings to elements of the SoftwareComponentType concerning a single Nv block. Note that the mapping is the same for all instances of a SoftwareComponentType (because the code depends on it).

Note that the block size is not specified here because
- it can be derived from the associated PerInstanceMemory size (implementatiion specific) in case of implicit storage/restauration of the block
- if can be derived from the array size passed via the correponding operations of the Service Interface in case of explicit storage/restauration of the block</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:NV-BLOCK-NEEDS" />
      <xsd:group ref="AR:SWC-NV-BLOCK-NEEDS" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ServiceMapping::SwcSupervisedEntityNeeds -->
  <xsd:group name="SWC-SUPERVISED-ENTITY-NEEDS">
    <xsd:annotation>
      <xsd:documentation>Specialization of SupervisedEntityNeeds for the case it is owned by a SoftwareComponentType.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SERVICE-CALL-PORTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="ROLE-BASED-R-PORT-ASSIGNMENT" type="AR:ROLE-BASED-R-PORT-ASSIGNMENT" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ServiceMapping::SwcSupervisedEntityNeeds -->
  <xsd:complexType name="SWC-SUPERVISED-ENTITY-NEEDS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Specialization of SupervisedEntityNeeds for the case it is owned by a SoftwareComponentType.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:SUPERVISED-ENTITY-NEEDS" />
      <xsd:group ref="AR:SWC-SUPERVISED-ENTITY-NEEDS" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class SWmapping::SwcToEcuMapping -->
  <xsd:group name="SWC-TO-ECU-MAPPING">
    <xsd:annotation>
      <xsd:documentation>Map software components to a specific ECU Instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="COMPONENT-IREFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="COMPONENT-IREF" type="AR:SW-COMP-TO-ECU-MAPPING--COMPONENT-IREF" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="ECU-INSTANCE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:ECU-INSTANCE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SWmapping::SwcToEcuMapping -->
  <xsd:complexType name="SWC-TO-ECU-MAPPING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Map software components to a specific ECU Instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:SWC-TO-ECU-MAPPING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="SWC-TO-ECU-MAPPING--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="SWC-TO-ECU-MAPPING" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class SWmapping::SwcToEcuMappingConstraint -->
  <xsd:group name="SWC-TO-ECU-MAPPING-CONSTRAINT">
    <xsd:annotation>
      <xsd:documentation>The System Constraint Description has to describe dedicated and exclusive mapping of SW-Cs to one or more ECUs. Dedicated mapping means that the SW-C can only be mapped to the ECUs it is dedicated to. Exclusive Mapping means that the SW-C cannot be mapped to the ECUs it is excluded from.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="COMPONENT-IREFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="COMPONENT-IREF" type="AR:SWC-TO-ECU-MAPPING-CONSTRAINT--COMPONENT-IREF" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="ECU-INSTANCE-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="ECU-INSTANCE-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:ECU-INSTANCE--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SWC-TO-ECU-MAPPING-CONSTRAINT-TYPE" type="AR:SWC-TO-ECU-MAPPING-CONSTRAINT-TYPE" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This attribute determines if dedicated or exclusive mapping is used.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SWmapping::SwcToEcuMappingConstraint -->
  <xsd:complexType name="SWC-TO-ECU-MAPPING-CONSTRAINT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The System Constraint Description has to describe dedicated and exclusive mapping of SW-Cs to one or more ECUs. Dedicated mapping means that the SW-C can only be mapped to the ECUs it is dedicated to. Exclusive Mapping means that the SW-C cannot be mapped to the ECUs it is excluded from.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SWC-TO-ECU-MAPPING-CONSTRAINT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class _instanceRef::SwcToEcuMappingConstraint_component -->
  <xsd:group name="SWC-TO-ECU-MAPPING-CONSTRAINT--COMPONENT-IREF">
    <xsd:sequence>
      <xsd:element name="SOFTWARE-COMPOSITION-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SOFTWARE-COMPOSITION--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="COMPONENT-PROTOTYPE-REF" minOccurs="0" maxOccurs="unbounded">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMPONENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="TARGET-COMPONENT-PROTOTYPE-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMPONENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::SwcToEcuMappingConstraint_component -->
  <xsd:complexType name="SWC-TO-ECU-MAPPING-CONSTRAINT--COMPONENT-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:SWC-TO-ECU-MAPPING-CONSTRAINT--COMPONENT-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class SWmapping::SwcToImplMapping -->
  <xsd:group name="SWC-TO-IMPL-MAPPING">
    <xsd:annotation>
      <xsd:documentation>Map instances of an AtomicSoftwareComponentType to a specific Implementation.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="COMPONENT-IMPLEMENTATION-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SWC-IMPLEMENTATION--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="COMPONENT-IREFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="COMPONENT-IREF" type="AR:SW-COMP-TO-IMPL-MAPPING--COMPONENT-IREF" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SWmapping::SwcToImplMapping -->
  <xsd:complexType name="SWC-TO-IMPL-MAPPING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Map instances of an AtomicSoftwareComponentType to a specific Implementation.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:SWC-TO-IMPL-MAPPING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class SignalPaths::SwcToSwcOperationArguments -->
  <xsd:group name="SWC-TO-SWC-OPERATION-ARGUMENTS">
    <xsd:annotation>
      <xsd:documentation>The SwcToSwcOperationArguments describes the information (client server operation arguments, plus the operation identification, if required) that are exchanged between two SW Components from exactly one client to one server, or from one server back to one client. The direction attribute defines which direction is described. If direction == IN, all arguments sent from the client to the server are described by the SwcToSwcOperationArguments, in direction == OUT, it's the arguments sent back from server to client.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DIRECTION" type="AR:SWC-TO-SWC-OPERATION-ARGUMENTS-DIRECTION-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>direction addressed by this SwcToSwcClientServerOperation element.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="OPERATION-IREFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="2">
            <xsd:element name="OPERATION-IREF" type="AR:SWC-TO-SWC-OPERATION-ARGUMENTS--OPERATION-IREF" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SignalPaths::SwcToSwcOperationArguments -->
  <xsd:complexType name="SWC-TO-SWC-OPERATION-ARGUMENTS" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The SwcToSwcOperationArguments describes the information (client server operation arguments, plus the operation identification, if required) that are exchanged between two SW Components from exactly one client to one server, or from one server back to one client. The direction attribute defines which direction is described. If direction == IN, all arguments sent from the client to the server are described by the SwcToSwcOperationArguments, in direction == OUT, it's the arguments sent back from server to client.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SWC-TO-SWC-OPERATION-ARGUMENTS" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class _instanceRef::SwcToSwcOperationArguments_operation -->
  <xsd:group name="SWC-TO-SWC-OPERATION-ARGUMENTS--OPERATION-IREF">
    <xsd:sequence>
      <xsd:element name="SOFTWARE-COMPOSITION-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SOFTWARE-COMPOSITION--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="COMPONENT-PROTOTYPE-REF" minOccurs="0" maxOccurs="unbounded">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMPONENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PORT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:PORT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="OPERATION-PROTOTYPE-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:OPERATION-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::SwcToSwcOperationArguments_operation -->
  <xsd:complexType name="SWC-TO-SWC-OPERATION-ARGUMENTS--OPERATION-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:SWC-TO-SWC-OPERATION-ARGUMENTS--OPERATION-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class SignalPaths::SwcToSwcSignal -->
  <xsd:group name="SWC-TO-SWC-SIGNAL">
    <xsd:annotation>
      <xsd:documentation>The SwcToSwcSignal describes the information (data element) that is exchanged between two SW Components. On the SWC Level it is possible that a SW Component sends one data element from one P-Port to two different SW Components (1:n Communication). The SwcToSwcSignal describes exactly the information which is exchanged between one P-Port of a SW Component and one R-Port of another SW Component.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DATA-ELEMENT-IREFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="2">
            <xsd:element name="DATA-ELEMENT-IREF" type="AR:SWC-TO-SWC-SIGNAL--DATA-ELEMENT-IREF" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SignalPaths::SwcToSwcSignal -->
  <xsd:complexType name="SWC-TO-SWC-SIGNAL" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The SwcToSwcSignal describes the information (data element) that is exchanged between two SW Components. On the SWC Level it is possible that a SW Component sends one data element from one P-Port to two different SW Components (1:n Communication). The SwcToSwcSignal describes exactly the information which is exchanged between one P-Port of a SW Component and one R-Port of another SW Component.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SWC-TO-SWC-SIGNAL" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class _instanceRef::SwcToSwcSignal_dataElement -->
  <xsd:group name="SWC-TO-SWC-SIGNAL--DATA-ELEMENT-IREF">
    <xsd:sequence>
      <xsd:element name="SOFTWARE-COMPOSITION-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:SOFTWARE-COMPOSITION--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="COMPONENT-PROTOTYPE-REF" minOccurs="0" maxOccurs="unbounded">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:COMPONENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PORT-PROTOTYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:PORT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="DATA-ELEMENT-PROTOTYPE-REF" minOccurs="1" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:DATA-ELEMENT-PROTOTYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class _instanceRef::SwcToSwcSignal_dataElement -->
  <xsd:complexType name="SWC-TO-SWC-SIGNAL--DATA-ELEMENT-IREF" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:SWC-TO-SWC-SIGNAL--DATA-ELEMENT-IREF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ECUCParameterDefTemplate::SymbolicNameReferenceParamDef -->
  <xsd:group name="SYMBOLIC-NAME-REFERENCE-PARAM-DEF">
    <xsd:annotation>
      <xsd:documentation>This specialization of a ReferenceParamDef specifies that the implementation of the reference is done using a symbolic name defined by the referenced Container's shortName.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ECUCParameterDefTemplate::SymbolicNameReferenceParamDef -->
  <xsd:complexType name="SYMBOLIC-NAME-REFERENCE-PARAM-DEF" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This specialization of a ReferenceParamDef specifies that the implementation of the reference is done using a symbolic name defined by the referenced Container's shortName.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:PARAM-CONF-MULTIPLICITY" />
      <xsd:group ref="AR:COMMON-CONFIGURATION-ATTRIBUTES" />
      <xsd:group ref="AR:REFERENCE-PARAM-DEF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ServerCall::SynchronousServerCallPoint -->
  <xsd:group name="SYNCHRONOUS-SERVER-CALL-POINT">
    <xsd:annotation>
      <xsd:documentation>This means that the runnable will block for a response from the server.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ServerCall::SynchronousServerCallPoint -->
  <xsd:complexType name="SYNCHRONOUS-SERVER-CALL-POINT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This means that the runnable will block for a response from the server.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:SERVER-CALL-POINT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class SystemTemplate::System -->
  <xsd:group name="SYSTEM">
    <xsd:annotation>
      <xsd:documentation>The top level element of the System Description.
The System description defines five major elements: Topology, Software, Communication, Mapping and Mapping Constraints.

The System element directly aggregates the elements describing the Software, Mapping and Mapping Constraints; it contains a reference to an ASAM FIBEX description specifying Communication and Topology.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="FIBEX-ELEMENT-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="FIBEX-ELEMENT-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:FIBEX-ELEMENT--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="MAPPING" type="AR:SYSTEM-MAPPING" minOccurs="0" maxOccurs="1" />
      <xsd:element name="SOFTWARE-COMPOSITION" type="AR:SOFTWARE-COMPOSITION" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SystemTemplate::System -->
  <xsd:complexType name="SYSTEM" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The top level element of the System Description.
The System description defines five major elements: Topology, Software, Communication, Mapping and Mapping Constraints.

The System element directly aggregates the elements describing the Software, Mapping and Mapping Constraints; it contains a reference to an ASAM FIBEX description specifying Communication and Topology.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:SYSTEM" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="SYSTEM--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="SYSTEM" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class SystemTemplate::SystemMapping -->
  <xsd:group name="SYSTEM-MAPPING">
    <xsd:annotation>
      <xsd:documentation>The system mapping aggregates all mapping aspects (mapping of SW components to ECUs, mapping of data elements to signals, and mapping constraints).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DATA-MAPPINGS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="CLIENT-SERVER-TO-SIGNAL-GROUP-MAPPING" type="AR:CLIENT-SERVER-TO-SIGNAL-GROUP-MAPPING" />
            <xsd:element name="SENDER-RECEIVER-TO-SIGNAL-GROUP-MAPPING" type="AR:SENDER-RECEIVER-TO-SIGNAL-GROUP-MAPPING" />
            <xsd:element name="SENDER-RECEIVER-TO-SIGNAL-MAPPING" type="AR:SENDER-RECEIVER-TO-SIGNAL-MAPPING" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="ECU-RESOURCE-MAPPINGS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="ECU-MAPPING" type="AR:ECU-MAPPING" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="MAPPING-CONSTRAINTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="COMPONENT-CLUSTERING" type="AR:COMPONENT-CLUSTERING" />
            <xsd:element name="COMPONENT-SEPARATION" type="AR:COMPONENT-SEPARATION" />
            <xsd:element name="SWC-TO-ECU-MAPPING-CONSTRAINT" type="AR:SWC-TO-ECU-MAPPING-CONSTRAINT" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="RESOURCE-ESTIMATIONS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="ECU-RESOURCE-ESTIMATION" type="AR:ECU-RESOURCE-ESTIMATION" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SIGNAL-PATH-CONSTRAINTS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="COMMON-SIGNAL-PATH" type="AR:COMMON-SIGNAL-PATH" />
            <xsd:element name="FORBIDDEN-SIGNAL-PATH" type="AR:FORBIDDEN-SIGNAL-PATH" />
            <xsd:element name="PERMISSIBLE-SIGNAL-PATH" type="AR:PERMISSIBLE-SIGNAL-PATH" />
            <xsd:element name="SEPARATE-SIGNAL-PATH" type="AR:SEPARATE-SIGNAL-PATH" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SW-IMPL-MAPPINGS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SWC-TO-IMPL-MAPPING" type="AR:SWC-TO-IMPL-MAPPING" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SW-MAPPINGS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SWC-TO-ECU-MAPPING" type="AR:SWC-TO-ECU-MAPPING" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class SystemTemplate::SystemMapping -->
  <xsd:complexType name="SYSTEM-MAPPING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The system mapping aggregates all mapping aspects (mapping of SW components to ECUs, mapping of data elements to signals, and mapping constraints).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:SYSTEM-MAPPING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class CoreCommunication::SystemSignal -->
  <xsd:group name="SYSTEM-SIGNAL">
    <xsd:annotation>
      <xsd:documentation>The system signal represents the communication system's view of data exchanged between SW components which reside on different ECUs. The system signals allow to represent this communication in a flattened structure, with exactly one system signal defined for each data element prototype sent and received by connected SW component instances.
 
According to the COM Specification, signal groups without signals are allowed. These have a "signalLength" = 0. In this case there shall be an "update-bit" configured.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DATA-TYPE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:PRIMITIVE-TYPE--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="INIT-VALUE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:VALUE-SPECIFICATION--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="LENGTH" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Size of the signal in bits.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class CoreCommunication::SystemSignal -->
  <xsd:complexType name="SYSTEM-SIGNAL" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The system signal represents the communication system's view of data exchanged between SW components which reside on different ECUs. The system signals allow to represent this communication in a flattened structure, with exactly one system signal defined for each data element prototype sent and received by connected SW component instances.
 
According to the COM Specification, signal groups without signals are allowed. These have a "signalLength" = 0. In this case there shall be an "update-bit" configured.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:SYSTEM-SIGNAL" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="SYSTEM-SIGNAL--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="SYSTEM-SIGNAL" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class CoreCommunication::SystemSignalGroup -->
  <xsd:group name="SYSTEM-SIGNAL-GROUP">
    <xsd:annotation>
      <xsd:documentation>A signal group refers to a set of signals that must always be kept together. A signal group is used to guarantee the atomic transfer of AUTOSAR composite data types.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="SYSTEM-SIGNAL-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="SYSTEM-SIGNAL-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:SYSTEM-SIGNAL--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class CoreCommunication::SystemSignalGroup -->
  <xsd:complexType name="SYSTEM-SIGNAL-GROUP" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A signal group refers to a set of signals that must always be kept together. A signal group is used to guarantee the atomic transfer of AUTOSAR composite data types.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:SYSTEM-SIGNAL-GROUP" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="SYSTEM-SIGNAL-GROUP--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="SYSTEM-SIGNAL-GROUP" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class Fibex4Multiplatform::TargetIPduRef -->
  <xsd:group name="TARGET-I-PDU-REF">
    <xsd:annotation>
      <xsd:documentation>Target destination of the referencing mapping.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DEFAULT-VALUE" type="AR:PDU-MAPPING-DEFAULT-VALUE" minOccurs="0" maxOccurs="1" />
      <xsd:element name="TARGET-I-PDU-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:I-PDU-TRIGGERING--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Fibex4Multiplatform::TargetIPduRef -->
  <xsd:complexType name="TARGET-I-PDU-REF" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Target destination of the referencing mapping.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:TARGET-I-PDU-REF" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class BasicElements::Temperature -->
  <xsd:group name="TEMPERATURE">
    <xsd:annotation>
      <xsd:documentation>General element to describe temperature ranges and need for cooling/heating.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="NEEDS-COOLING" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>These attributes describe that there is an active cooling system required for this HW Element.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="NEEDS-HEATING" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>These attributes describe that there is an active heating system required for this HW Element.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="OPERATION-MAX" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>It describes the temperature range (max) in which the HW Element can be operated.
Unit: Kelvin (K)</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="OPERATION-MIN" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>It describes the temperature range (min) in which the HW Element can be operated.
Unit: Kelvin (K)</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="OPERATION-TYPICAL" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>It describes the temperature range (typical) in which the HW Element can be operated.
Unit: Kelvin (K)</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="STORAGE-MAX" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The storage temperature defines maximum temperature the device is allowed to be stored. The HW Element is not in an operational state.
Unit: Kelvin (K)</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="STORAGE-MIN" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The storage temperature defines minimum temperature the device is allowed to be stored. The HW Element is not in an operational state.
Unit: Kelvin (K)</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class BasicElements::Temperature -->
  <xsd:complexType name="TEMPERATURE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>General element to describe temperature ranges and need for cooling/heating.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:TEMPERATURE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class BasicElements::TimeRange -->
  <xsd:group name="TIME-RANGE">
    <xsd:sequence>
      <xsd:element name="MAX" type="xsd:double" minOccurs="0" maxOccurs="1" />
      <xsd:element name="MIN" type="xsd:double" minOccurs="0" maxOccurs="1" />
      <xsd:element name="TYPICAL" type="xsd:double" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class BasicElements::TimeRange -->
  <xsd:complexType name="TIME-RANGE" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:TIME-RANGE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Timing::TimeRangeType -->
  <xsd:group name="TIME-RANGE-TYPE">
    <xsd:annotation>
      <xsd:documentation>The timeRange can be specified with the value attribute. Optionally a tolerance can be defined.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="TOLERANCE" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="1">
            <xsd:element name="ABSOLUTE-TOLERANCE" type="AR:ABSOLUTE-TOLERANCE" />
            <xsd:element name="RELATIVE-TOLERANCE" type="AR:RELATIVE-TOLERANCE" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="VALUE" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Average value of a date (in seconds)</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Timing::TimeRangeType -->
  <xsd:complexType name="TIME-RANGE-TYPE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The timeRange can be specified with the value attribute. Optionally a tolerance can be defined.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:TIME-RANGE-TYPE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Timing::TimeRangeTypeTolerance -->
  <xsd:group name="TIME-RANGE-TYPE-TOLERANCE">
    <xsd:annotation>
      <xsd:documentation>Maximum allowable deviation</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- element group for class Peripherals::Timer -->
  <xsd:group name="TIMER">
    <xsd:annotation>
      <xsd:documentation>The simplest form is an array of directly coupled D-flip flops, which build up a shift register, with separate output from each stage, thus forming a time-register. A clock signal at the input increments the value of the register. Some cases uses some logic in combination of the shift register in order to form a special adopted representation of the information or to fulfil special requirements.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CAN-BE-RE-INIT" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Defines if the peripheral can automatically be reset during operation.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="COUNT-DIRECTION" type="AR:TIMER-COUNT-DIRECTION-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The direction defines if the counter of a timer counts up, down or if it can be selected.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MODE" type="AR:TIMER-MODE-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>single: The timer is counted from a defined start value to a defined end value and then stopped. 
continuous: The timer is counted from a defined start value to a defined end value and then restarted with the start value.
free: The timer is counted always to the available maximum value of the timer structure, then a wrap around occurs and the timer starts again from the HW defined startpoint; e.g. a 16 bit Timer counts from 0(hex)....0FFFF(hex), then after the overflow again from 0(hex)....0FFFF(hex).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Peripherals::Timer -->
  <xsd:complexType name="TIMER" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>The simplest form is an array of directly coupled D-flip flops, which build up a shift register, with separate output from each stage, thus forming a time-register. A clock signal at the input increments the value of the register. Some cases uses some logic in combination of the shift register in order to form a special adopted representation of the information or to fulfil special requirements.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-ELEMENT" />
      <xsd:group ref="AR:PERIPHERAL" />
      <xsd:group ref="AR:GENERAL-PURPOSE-TIMER" />
      <xsd:group ref="AR:TIMER" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class RTEEvents::TimingEvent -->
  <xsd:group name="TIMING-EVENT">
    <xsd:annotation>
      <xsd:documentation>TimingEvent references the runnable that need to be started in response to the TimingEvent</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="PERIOD" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Period of timing event in seconds.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class RTEEvents::TimingEvent -->
  <xsd:complexType name="TIMING-EVENT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>TimingEvent references the runnable that need to be started in response to the TimingEvent</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:RTE-EVENT" />
      <xsd:group ref="AR:TIMING-EVENT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class TransportProtocols::TpChannel -->
  <xsd:group name="TP-CHANNEL">
    <xsd:annotation>
      <xsd:documentation>A Transport Protocol channel.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- element group for class Communication::TransmissionAcknowledgementRequest -->
  <xsd:group name="TRANSMISSION-ACKNOWLEDGEMENT-REQUEST">
    <xsd:annotation>
      <xsd:documentation>Requests transmission acknowledgement that data has been sent successfully. Success/failure is reported via a SendPoint of a Runnable.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="TIMEOUT" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Number of seconds before an error is reported or in case of allowed redundancy, the value is sent again.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Communication::TransmissionAcknowledgementRequest -->
  <xsd:complexType name="TRANSMISSION-ACKNOWLEDGEMENT-REQUEST" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Requests transmission acknowledgement that data has been sent successfully. Success/failure is reported via a SendPoint of a Runnable.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:TRANSMISSION-ACKNOWLEDGEMENT-REQUEST" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Timing::TransmissionModeCondition -->
  <xsd:group name="TRANSMISSION-MODE-CONDITION">
    <xsd:annotation>
      <xsd:documentation>Possibility to attach a condition to each signal within an I-PDU.

If at least one condition evaluates to true,
TRANSMISSION MODE True shall be used for this I-Pdu. In all other cases, the TRANSMISSION MODE FALSE shall be used.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DATA-FILTER" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="1">
            <xsd:element name="ALWAYS" type="AR:ALWAYS" />
            <xsd:element name="MASKED-NEW-DIFFERS-MASKED-OLD" type="AR:MASKED-NEW-DIFFERS-MASKED-OLD" />
            <xsd:element name="MASKED-NEW-DIFFERS-X" type="AR:MASKED-NEW-DIFFERS-X" />
            <xsd:element name="MASKED-NEW-EQUALS-MASKED-OLD" type="AR:MASKED-NEW-EQUALS-MASKED-OLD" />
            <xsd:element name="MASKED-NEW-EQUALS-X" type="AR:MASKED-NEW-EQUALS-X" />
            <xsd:element name="NEVER" type="AR:NEVER" />
            <xsd:element name="NEW-IS-DIFFERENT" type="AR:NEW-IS-DIFFERENT" />
            <xsd:element name="NEW-IS-EQUAL" type="AR:NEW-IS-EQUAL" />
            <xsd:element name="NEW-IS-GREATER" type="AR:NEW-IS-GREATER" />
            <xsd:element name="NEW-IS-GREATER-OR-EQUAL" type="AR:NEW-IS-GREATER-OR-EQUAL" />
            <xsd:element name="NEW-IS-LESS" type="AR:NEW-IS-LESS" />
            <xsd:element name="NEW-IS-LESS-OR-EQUAL" type="AR:NEW-IS-LESS-OR-EQUAL" />
            <xsd:element name="NEW-IS-OUTSIDE" type="AR:NEW-IS-OUTSIDE" />
            <xsd:element name="NEW-IS-WITHIN" type="AR:NEW-IS-WITHIN" />
            <xsd:element name="ONE-EVERY-N" type="AR:ONE-EVERY-N" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SIGNAL-IN-I-PDU-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:I-SIGNAL-TO-I-PDU-MAPPING--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Timing::TransmissionModeCondition -->
  <xsd:complexType name="TRANSMISSION-MODE-CONDITION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Possibility to attach a condition to each signal within an I-PDU.

If at least one condition evaluates to true,
TRANSMISSION MODE True shall be used for this I-Pdu. In all other cases, the TRANSMISSION MODE FALSE shall be used.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:TRANSMISSION-MODE-CONDITION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Timing::TransmissionModeDeclaration -->
  <xsd:group name="TRANSMISSION-MODE-DECLARATION">
    <xsd:annotation>
      <xsd:documentation>AUTOSAR COM provides the possibility to define two different TRANSMISSION MODES (True and False) for each I-PDU.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="TRANSMISSION-MODE-CONDITIONS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="TRANSMISSION-MODE-CONDITION" type="AR:TRANSMISSION-MODE-CONDITION" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="TRANSMISSION-MODE-FALSE-TIMING" type="AR:TRANSMISSION-MODE-FALSE-TIMING" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Timing::TransmissionModeDeclaration -->
  <xsd:complexType name="TRANSMISSION-MODE-DECLARATION" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>AUTOSAR COM provides the possibility to define two different TRANSMISSION MODES (True and False) for each I-PDU.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:TRANSMISSION-MODE-DECLARATION" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Timing::TransmissionModeFalseTiming -->
  <xsd:group name="TRANSMISSION-MODE-FALSE-TIMING">
    <xsd:annotation>
      <xsd:documentation>If the COM Transmission Mode is false the timing is aggregated by the TransmissionModeIFalseTiming element.  If the COM Transmission Mode is true the timing is aggregated by the SignalIPdu/IPduTiming element.  

COM supports the following Transmission Modes: 
Periodic (Cyclic Timing)
Direct /n-times (EventControlledTiming)
Mixed (Cyclic and EventControlledTiming are assigned)
None (no timing is assigned)</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CYCLIC-TIMING" type="AR:CYCLIC-TIMING" minOccurs="0" maxOccurs="1" />
      <xsd:element name="EVENT-CONTROLLED-TIMING" type="AR:EVENT-CONTROLLED-TIMING" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Timing::TransmissionModeFalseTiming -->
  <xsd:complexType name="TRANSMISSION-MODE-FALSE-TIMING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>If the COM Transmission Mode is false the timing is aggregated by the TransmissionModeIFalseTiming element.  If the COM Transmission Mode is true the timing is aggregated by the SignalIPdu/IPduTiming element.  

COM supports the following Transmission Modes: 
Periodic (Cyclic Timing)
Direct /n-times (EventControlledTiming)
Mixed (Cyclic and EventControlledTiming are assigned)
None (no timing is assigned)</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:TRANSMISSION-MODE-FALSE-TIMING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Inlines::Tt -->
  <xsd:group name="TT">
    <xsd:annotation>
      <xsd:documentation>Use &lt;tt&gt; to format technical terms within the paragraph element.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__TT_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Inlines::Tt -->
  <xsd:complexType name="TT" abstract="false" mixed="true">
    <xsd:annotation>
      <xsd:documentation>Use &lt;tt&gt; to format technical terms within the paragraph element.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__TT_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice minOccurs="0" maxOccurs="unbounded" />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class LinCommunication::UnassignFrameIdTiming -->
  <xsd:group name="UNASSIGN-FRAME-ID-TIMING">
    <xsd:annotation>
      <xsd:documentation>Schedule entry for an Unassign Frame Id master request where the protected identifier is assigned the value 0x40. This will disable reception/transmission of a previously dynamically assigned frame identifier.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="UNASSIGNED-FRAME-TRIGGERING-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:LIN-FRAME-TRIGGERING--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class LinCommunication::UnassignFrameIdTiming -->
  <xsd:complexType name="UNASSIGN-FRAME-ID-TIMING" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Schedule entry for an Unassign Frame Id master request where the protected identifier is assigned the value 0x40. This will disable reception/transmission of a previously dynamically assigned frame identifier.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:RELATIVELY-SCHEDULED-TIMING" />
      <xsd:group ref="AR:ASSIGNMENT-TIMING-TYPE" />
      <xsd:group ref="AR:UNASSIGN-FRAME-ID-TIMING" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Units::Unit -->
  <xsd:group name="UNIT">
    <xsd:annotation>
      <xsd:documentation>This is a physical measurement unit. All units that might be defined should stem from SI units. In order to convert one unit into another factor and offset are defined. For the calculation from SI-unit to the defined unit the factor (factorSiToUnit ) and the offset (offsetSiToUnit ) are applied:

 unit = siUnit * factorSiToUnit + offsetSiToUnit 

For the calculation from a unit to SI-unit the reciprocal of the factor (factorSiToUnit ) and the negation of the offset (offsetSiToUnit ) are applied:

siUnit = (unit - offsetSiToUnit) / factorSiToUnit</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="ASAM-UNIT";asam.useCase="MDX";msr.id="type__UNIT_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="DISPLAY-NAME" type="AR:SL-DATA-3" minOccurs="0" maxOccurs="1" />
      <xsd:element name="FACTOR-SI-TO-UNIT" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>this is the factor for the convesion from and to siUnits.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="UNIT_TYPE__FACTOR-SI-TO-UNIT";msr.tbdString="true";xml.sequenceOffset="30"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="OFFSET-SI-TO-UNIT" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>this is the offset for the convesion from and to siUnits.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="UNIT_TYPE__OFFSET-SI-TO-UNIT";msr.tbdString="true";xml.sequenceOffset="40"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PHYSICAL-DIMENSION-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:PHYSICAL-DIMENSION--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Units::Unit -->
  <xsd:complexType name="UNIT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This is a physical measurement unit. All units that might be defined should stem from SI units. In order to convert one unit into another factor and offset are defined. For the calculation from SI-unit to the defined unit the factor (factorSiToUnit ) and the offset (offsetSiToUnit ) are applied:

 unit = siUnit * factorSiToUnit + offsetSiToUnit 

For the calculation from a unit to SI-unit the reciprocal of the factor (factorSiToUnit ) and the negation of the offset (offsetSiToUnit ) are applied:

siUnit = (unit - offsetSiToUnit) / factorSiToUnit</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="ASAM-UNIT";asam.useCase="MDX";msr.id="type__UNIT_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:UNIT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="UNIT--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="UNIT" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class Units::UnitGroup -->
  <xsd:group name="UNIT-GROUP">
    <xsd:sequence>
      <xsd:element name="UNIT-REFS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="UNIT-REF">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="AR:REF">
                    <xsd:attribute name="DEST" type="AR:UNIT--SUBTYPES-ENUM" use="required" />
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Units::UnitGroup -->
  <xsd:complexType name="UNIT-GROUP" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:UNIT-GROUP" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Units::UnitSpec -->
  <xsd:group name="UNIT-SPEC">
    <xsd:sequence>
      <xsd:element name="UNIT-GROUPS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="UNIT-GROUP" type="AR:UNIT-GROUP" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="UNITS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="UNIT" type="AR:UNIT" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PHYSICAL-DIMENSIONS" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="PHYSICAL-DIMENSION" type="AR:PHYSICAL-DIMENSION" />
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Units::UnitSpec -->
  <xsd:complexType name="UNIT-SPEC" abstract="false" mixed="false">
    <xsd:sequence>
      <xsd:group ref="AR:UNIT-SPEC" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Communication::UnqueuedReceiverComSpec -->
  <xsd:group name="UNQUEUED-RECEIVER-COM-SPEC">
    <xsd:annotation>
      <xsd:documentation>Communication attributes specific to unqueued receiving.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="ALIVE-TIMEOUT" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Specify the amount of time (in seconds) after which the software component (via the RTE)  needs to be notified if the corresponding data item have not been received according to the specified timing description.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="HANDLE-INVALID" type="AR:HANDLE-INVALID-TYPE" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Specifies strategy of handling the reception of invalidValue.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="INIT-VALUE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:VALUE-SPECIFICATION--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="RESYNC-TIME" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Time allowed for resynchronization of data values after current data is lost, e.g. after an ECU reset.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Communication::UnqueuedReceiverComSpec -->
  <xsd:complexType name="UNQUEUED-RECEIVER-COM-SPEC" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Communication attributes specific to unqueued receiving.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:RECEIVER-COM-SPEC" />
      <xsd:group ref="AR:UNQUEUED-RECEIVER-COM-SPEC" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Communication::UnqueuedSenderComSpec -->
  <xsd:group name="UNQUEUED-SENDER-COM-SPEC">
    <xsd:annotation>
      <xsd:documentation>Communication attributes specific to distribution of data (P-Port, sender-receiver interface and data element carries "data" opposed to carrying an "event").</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CAN-INVALIDATE" type="xsd:boolean" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Flag whether the component can actively invalidate data.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="INIT-VALUE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:VALUE-SPECIFICATION--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Communication::UnqueuedSenderComSpec -->
  <xsd:complexType name="UNQUEUED-SENDER-COM-SPEC" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Communication attributes specific to distribution of data (P-Port, sender-receiver interface and data element carries "data" opposed to carrying an "event").</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:SENDER-COM-SPEC" />
      <xsd:group ref="AR:UNQUEUED-SENDER-COM-SPEC" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Inlines::Url -->
  <xsd:group name="URL">
    <xsd:annotation>
      <xsd:documentation>This element specifies the Uniform Resource Locator (URL) of the context contained in the &lt;url&gt; element.</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="URL";msr.id="type__URL_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="VALUE" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This is the url itself</xsd:documentation>
          <xsd:appinfo source="tags">xml.roleElement="false";xml.roleWrapperElement="false";xml.typeElement="false";xml.typeWrapperElement="false"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- attribute group for class Inlines::Url -->
  <xsd:attributeGroup name="URL">
    <xsd:annotation>
      <xsd:documentation>This element specifies the Uniform Resource Locator (URL) of the context contained in the &lt;url&gt; element.</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="URL";msr.id="type__URL_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:attribute name="MIME-TYPE" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>this denotes the mime type of the resource located by the url.</xsd:documentation>
        <xsd:appinfo source="tags">msr.id="URL_TYPE__URL_TYPE__MIME-TYPE";xml.attribute="true"</xsd:appinfo>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:attributeGroup>
  <!-- complex type for class Inlines::Url -->
  <xsd:complexType name="URL">
    <xsd:annotation>
      <xsd:documentation>This element specifies the Uniform Resource Locator (URL) of the context contained in the &lt;url&gt; element.</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="URL";msr.id="type__URL_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="xsd:string">
        <xsd:attributeGroup ref="AR:AR-OBJECT" />
        <xsd:attributeGroup ref="AR:URL" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <!-- element group for class ValueModel::V -->
  <xsd:group name="V">
    <xsd:annotation>
      <xsd:documentation>Use &lt;v&gt; to enter a numerical value.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__V_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ValueModel::V -->
  <xsd:complexType name="V" abstract="false" mixed="true">
    <xsd:annotation>
      <xsd:documentation>Use &lt;v&gt; to enter a numerical value.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__V_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice minOccurs="0" maxOccurs="unbounded" />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ValueModel::ValueByFormula -->
  <xsd:group name="VALUE-BY-FORMULA">
    <xsd:sequence />
  </xsd:group>
  <!-- element group for class Constants::ValueSpecification -->
  <xsd:group name="VALUE-SPECIFICATION">
    <xsd:annotation>
      <xsd:documentation>Description of a constant of a modeled datatype (M1 datatype).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <xsd:simpleType name="VALUE-SPECIFICATION--SUBTYPES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="ARRAY-SPECIFICATION" />
      <xsd:enumeration value="BOOLEAN-LITERAL" />
      <xsd:enumeration value="CHAR-LITERAL" />
      <xsd:enumeration value="CONSTANT-REFERENCE" />
      <xsd:enumeration value="INTEGER-LITERAL" />
      <xsd:enumeration value="OPAQUE-LITERAL" />
      <xsd:enumeration value="PRIMITIVE-SPECIFICATION" />
      <xsd:enumeration value="REAL-LITERAL" />
      <xsd:enumeration value="RECORD-SPECIFICATION" />
      <xsd:enumeration value="STRING-LITERAL" />
      <xsd:enumeration value="VALUE-SPECIFICATION" />
    </xsd:restriction>
  </xsd:simpleType>
  <!-- element group for class ValueModel::Vf -->
  <xsd:group name="VF">
    <xsd:annotation>
      <xsd:documentation>Value calculated via a system constant. This element is included in every case, where parameters should be generated from numerical values during compile time (not runtime!). Thus for example, the influence of the cylinder number on conversion formulae, can be introduced in a repeatable manner.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__VF_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ValueModel::Vf -->
  <xsd:complexType name="VF" abstract="false" mixed="true">
    <xsd:annotation>
      <xsd:documentation>Value calculated via a system constant. This element is included in every case, where parameters should be generated from numerical values during compile time (not runtime!). Thus for example, the influence of the cylinder number on conversion formulae, can be introduced in a repeatable manner.</xsd:documentation>
      <xsd:appinfo source="tags">asam.useCase="MDX";msr.id="type__VF_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice minOccurs="0" maxOccurs="unbounded" />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class ValueModel::Vt -->
  <xsd:group name="VT">
    <xsd:annotation>
      <xsd:documentation>&lt;vt&gt; represents one particular textual value of the calibration item.</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="VT";asam.useCase="MDX";msr.id="type__VT_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- attribute group for class ValueModel::Vt -->
  <xsd:attributeGroup name="VT">
    <xsd:annotation>
      <xsd:documentation>&lt;vt&gt; represents one particular textual value of the calibration item.</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="VT";asam.useCase="MDX";msr.id="type__VT_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:attribute name="XMLSPACE" type="xsd:string" />
  </xsd:attributeGroup>
  <!-- complex type for class ValueModel::Vt -->
  <xsd:complexType name="VT" abstract="false" mixed="true">
    <xsd:annotation>
      <xsd:documentation>&lt;vt&gt; represents one particular textual value of the calibration item.</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="VT";asam.useCase="MDX";msr.id="type__VT_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice minOccurs="0" maxOccurs="unbounded" />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:VT" />
  </xsd:complexType>
  <!-- element group for class RTEEvents::WaitPoint -->
  <xsd:group name="WAIT-POINT">
    <xsd:annotation>
      <xsd:documentation>This defines a wait-point for which the runnable can wait.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="TIMEOUT" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Time in seconds before the waitpoint times out and the blocking wait call returns with an error indicating the timeout.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="TRIGGER-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:RTE-EVENT--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class RTEEvents::WaitPoint -->
  <xsd:complexType name="WAIT-POINT" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This defines a wait-point for which the runnable can wait.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:WAIT-POINT" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ApplicationAttributes::WakeUp -->
  <xsd:group name="WAKE-UP">
    <xsd:annotation>
      <xsd:documentation>This attribut indicates wheter the software component reading this value provides dedicated runnables to handle a wake-up call by the IoHwAbstraction layer.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class ApplicationAttributes::WakeUp -->
  <xsd:complexType name="WAKE-UP" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This attribut indicates wheter the software component reading this value provides dedicated runnables to handle a wake-up call by the IoHwAbstraction layer.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Peripherals::WatchDog -->
  <xsd:group name="WATCH-DOG">
    <xsd:annotation>
      <xsd:documentation>A form of interval timer, which is used to detect a possible malfunction of the processing unit. The timer is started as a countdown and has to be triggered within a specific time. Either the trigger only has to occur before the count-down runs out, or the trigger has to occur within a specific window before the timeout, therefore a trigger too early will also set off the watchdog. If the trigger is not correctly performed the watchdog will set off and will initiate an interrupt or perform a reset of the whole processing unit or ECU.
The watchdog can be implemented in software or hardware and if the implementation is in hardware it can be integrated into the processing unit or connected externally.
Depending on the complexity of the watchdog the interfacing is either a serial communication or some discrete I/O lines. Also the trigger itself can be just some digital peak or can be some calculated request-response mechanism. The actual handling of the watchdog has to be covered by some specific driver software.
The watchdog will use at least an interrupt of the processing unit and also some peripheral connections for the control and set-up.
To enable different operating modes of the processing unit and the ECU it is important to specify if the watchdog can be disabled (e.g. during flash programming).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CLOCK-SOURCE-REF" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="AR:REF">
              <xsd:attribute name="DEST" type="AR:OSCILLATOR--SUBTYPES-ENUM" use="required" />
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="MODE" type="AR:WATCH-DOG-MODE-ENUM" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>A Watchdog can be running in different modes. In normal mode must the watchdog be kicked within a certain maximum time. In the windowed mode there is also a lower limit of the time when the watchdog has to be kicked. In debug mode is the watchdog disabled. Sometimes it's also required that the watchdog can be disabled and enabled during software download. To ensure that this mode is not entered in normal operation there is often some kind of security procedure to enter the mode.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="THRESHOLD-VALUES" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="THRESHOLD-VALUE" type="xsd:integer" minOccurs="0" maxOccurs="unbounded">
              <xsd:annotation>
                <xsd:documentation>The threshold is the definition of a counter value. When the counter has reached this value some action is performed, e.g. an interrupt can be generated.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Peripherals::WatchDog -->
  <xsd:complexType name="WATCH-DOG" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>A form of interval timer, which is used to detect a possible malfunction of the processing unit. The timer is started as a countdown and has to be triggered within a specific time. Either the trigger only has to occur before the count-down runs out, or the trigger has to occur within a specific window before the timeout, therefore a trigger too early will also set off the watchdog. If the trigger is not correctly performed the watchdog will set off and will initiate an interrupt or perform a reset of the whole processing unit or ECU.
The watchdog can be implemented in software or hardware and if the implementation is in hardware it can be integrated into the processing unit or connected externally.
Depending on the complexity of the watchdog the interfacing is either a serial communication or some discrete I/O lines. Also the trigger itself can be just some digital peak or can be some calculated request-response mechanism. The actual handling of the watchdog has to be covered by some specific driver software.
The watchdog will use at least an interrupt of the processing unit and also some peripheral connections for the control and set-up.
To enable different operating modes of the processing unit and the ECU it is important to specify if the watchdog can be disabled (e.g. during flash programming).</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HW-ELEMENT" />
      <xsd:group ref="AR:PERIPHERAL" />
      <xsd:group ref="AR:WATCH-DOG" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class ExecutionTime::WorstCaseExecutionTime -->
  <xsd:group name="WORST-CASE-EXECUTION-TIME">
    <xsd:annotation>
      <xsd:documentation>WorstCaseExecutionTime provides an analytic method for specifying the minimum and maximum execution time.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="MAXIMAL-EXECUTION-TIME" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Maximum WorstCaseExecutionTime.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="MINIMAL-EXECUTION-TIME" type="xsd:double" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Minimum WorstCaseExecutionTime.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class ExecutionTime::WorstCaseExecutionTime -->
  <xsd:complexType name="WORST-CASE-EXECUTION-TIME" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>WorstCaseExecutionTime provides an analytic method for specifying the minimum and maximum execution time.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:EXECUTION-TIME" />
      <xsd:group ref="AR:WORST-CASE-EXECUTION-TIME" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class HeapUsage::WorstCaseHeapUsage -->
  <xsd:group name="WORST-CASE-HEAP-USAGE">
    <xsd:annotation>
      <xsd:documentation>Provides a formal worst case heap usage.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="MEMORY-CONSUMPTION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Worst case heap consumption.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class HeapUsage::WorstCaseHeapUsage -->
  <xsd:complexType name="WORST-CASE-HEAP-USAGE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Provides a formal worst case heap usage.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:HEAP-USAGE" />
      <xsd:group ref="AR:WORST-CASE-HEAP-USAGE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class StackUsage::WorstCaseStackUsage -->
  <xsd:group name="WORST-CASE-STACK-USAGE">
    <xsd:annotation>
      <xsd:documentation>Provides a formal worst case stack usage.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="MEMORY-CONSUMPTION" type="xsd:integer" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Worst case stack consumption.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class StackUsage::WorstCaseStackUsage -->
  <xsd:complexType name="WORST-CASE-STACK-USAGE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Provides a formal worst case stack usage.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:STACK-USAGE" />
      <xsd:group ref="AR:WORST-CASE-STACK-USAGE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Inlines::Xdoc -->
  <xsd:group name="XDOC">
    <xsd:annotation>
      <xsd:documentation>Use &lt;xdoc&gt; , to reference an external document.</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="XDOC";msr.id="type__XDOC_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Inlines::Xdoc -->
  <xsd:complexType name="XDOC" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Use &lt;xdoc&gt; , to reference an external document.</xsd:documentation>
      <xsd:appinfo source="tags">asam.harmonizedObject="XDOC";msr.id="type__XDOC_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Inlines::Xfile -->
  <xsd:group name="XFILE">
    <xsd:annotation>
      <xsd:documentation>Use &lt;xfile&gt; , to reference an external file.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__XFILE_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="URL" type="AR:URL" minOccurs="0" maxOccurs="1" />
      <xsd:element name="TOOL" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This element describes the tool which was used to generate the corresponding &lt;xfile&gt; . Kept as a string.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="XFILE_TYPE__TOOL";msr.tbdString="true";xml.sequenceOffset="50"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="TOOL-VERSION" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This element describes the tool version which was used to generate the corresponding &lt;xfile&gt; . Kept as a string.</xsd:documentation>
          <xsd:appinfo source="tags">msr.id="XFILE_TYPE__TOOL-VERSION";msr.tbdString="true";xml.sequenceOffset="60"</xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <!-- complex type for class Inlines::Xfile -->
  <xsd:complexType name="XFILE" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>Use &lt;xfile&gt; , to reference an external file.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__XFILE_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
      <xsd:group ref="AR:XFILE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <!-- element group for class Inlines::Xref -->
  <xsd:group name="XREF">
    <xsd:annotation>
      <xsd:documentation>Use &lt;xref&gt; , to generate cross-references within the document.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__XREF_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Inlines::Xref -->
  <xsd:complexType name="XREF" abstract="false" mixed="true">
    <xsd:annotation>
      <xsd:documentation>Use &lt;xref&gt; , to generate cross-references within the document.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__XREF_TYPE";msr.isGroupOnly="true"</xsd:appinfo>
    </xsd:annotation>
    <xsd:choice minOccurs="0" maxOccurs="unbounded" />
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
  </xsd:complexType>
  <!-- element group for class Inlines::XrefTarget -->
  <xsd:group name="XREF-TARGET">
    <xsd:annotation>
      <xsd:documentation>This element specifies a reference target which can be scattered throughout the text.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__XREF-TARGET_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence />
  </xsd:group>
  <!-- complex type for class Inlines::XrefTarget -->
  <xsd:complexType name="XREF-TARGET" abstract="false" mixed="false">
    <xsd:annotation>
      <xsd:documentation>This element specifies a reference target which can be scattered throughout the text.</xsd:documentation>
      <xsd:appinfo source="tags">msr.id="type__XREF-TARGET_TYPE"</xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="AR:IDENTIFIABLE" />
    </xsd:sequence>
    <xsd:attributeGroup ref="AR:AR-OBJECT" />
    <xsd:attributeGroup ref="AR:IDENTIFIABLE" />
  </xsd:complexType>
  <xsd:simpleType name="ACTUATOR-HW-DEFAULT-POSITIOIN-TYPE-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="STABLE" />
      <xsd:enumeration value="INSTABLE" />
      <xsd:enumeration value="BI-STABLE" />
      <xsd:enumeration value="MULTI-STABLE" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="ACTUATOR-HW-ELECTRICAL-TYPE-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="RESISTIVE" />
      <xsd:enumeration value="CAPACITIVE" />
      <xsd:enumeration value="INDUCTIVE" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="ACTUATOR-HW-MOVEMENT-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="UNIDIRECTIONAL" />
      <xsd:enumeration value="BIDIRECTIONAL" />
      <xsd:enumeration value="UNIDIRECTIONAL-WITH-AUTO-RESET" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="ADC-BEHAVIOUR-AT-LIMIT-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="CLIPPING" />
      <xsd:enumeration value="DEFAULT" />
      <xsd:enumeration value="UNDEFINED" />
      <xsd:enumeration value="OTHER" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="ANALOGUE-IO-MODE-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="CONTINUOUS" />
      <xsd:enumeration value="SINGLE" />
      <xsd:enumeration value="SEQUENTIAL" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="BSW-CALL-TYPE">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="REGULAR" />
      <xsd:enumeration value="CALLBACK" />
      <xsd:enumeration value="INTERRUPT" />
      <xsd:enumeration value="SCHEDULED" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="BSW-EXECUTION-CONTEXT">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="INTERRUPT" />
      <xsd:enumeration value="UNSPECIFIED" />
      <xsd:enumeration value="TASK" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="BSW-INTERRUPT-CATEGORY">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="CAT-1" />
      <xsd:enumeration value="CAT-2" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="BYTE-ORDER-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="MOST-SIGNIFICANT-BYTE-LAST" />
      <xsd:enumeration value="MOST-SIGNIFICANT-BYTE-FIRST" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="CALCULATION-LANGUAGE">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="INFORMAL" />
      <xsd:enumeration value="A-RFORMAL" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="CALPRM-AXIS-CATEGORY-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="STD-AXIS" />
      <xsd:enumeration value="FIX-AXIS" />
      <xsd:enumeration value="CURVE-AXIS" />
      <xsd:enumeration value="COM-AXIS" />
      <xsd:enumeration value="RES-AXIS" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="CAN-ADRESSING-MODE-TYPE">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="STANDARD" />
      <xsd:enumeration value="EXTENDED" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="CAN-TP-ADDRESSING-FORMAT-TYPE">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="STANDARD" />
      <xsd:enumeration value="EXTENDED" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="CCU-MODE-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="CAPTURE" />
      <xsd:enumeration value="COMPARE" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="CLOCK-TYPE-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="PLL" />
      <xsd:enumeration value="DIVIDER" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="CODE-TYPE-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="SRC" />
      <xsd:enumeration value="OBJ" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="COMMUNICATION-APPROACH-TYPE">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="IMPLICIT" />
      <xsd:enumeration value="EXPLICIT" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="COMMUNICATION-ARCHITECTURE-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="MASTER" />
      <xsd:enumeration value="SLAVE" />
      <xsd:enumeration value="MULTI-MASTER" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="COMMUNICATION-DIRECTION-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="INPUT" />
      <xsd:enumeration value="OUTPUT" />
      <xsd:enumeration value="INOUT" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="COMMUNICATION-PHYSICAL-MEDIUM-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="ELECTRICAL" />
      <xsd:enumeration value="OPTICAL" />
      <xsd:enumeration value="WIRELESS" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="CONFIGURATION-AFFECTION">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="PC-AFFECTS-PB" />
      <xsd:enumeration value="PC-AFFECTS-LT" />
      <xsd:enumeration value="PC-AFFECTS-LT-AND-PB" />
      <xsd:enumeration value="NO-AFFECT" />
      <xsd:enumeration value="LT-AFFECTS-PB" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="CONFIGURATION-CLASS">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="POST-BUILD" />
      <xsd:enumeration value="PRE-COMPILE" />
      <xsd:enumeration value="PUBLISHED-INFORMATION" />
      <xsd:enumeration value="LINK" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="CONFIGURATION-VARIANT">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="VARIANT-PRE-COMPILE" />
      <xsd:enumeration value="VARIANT-LINK-TIME" />
      <xsd:enumeration value="VARIANT-POST-BUILD" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="CYCLE-REPETITION-TYPE">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="CYCLE-REPETITION-64" />
      <xsd:enumeration value="CYCLE-REPETITION-1" />
      <xsd:enumeration value="CYCLE-REPETITION-2" />
      <xsd:enumeration value="CYCLE-REPETITION-4" />
      <xsd:enumeration value="CYCLE-REPETITION-8" />
      <xsd:enumeration value="CYCLE-REPETITION-16" />
      <xsd:enumeration value="CYCLE-REPETITION-32" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="DEPENDENCY-USAGE-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="COMPILE" />
      <xsd:enumeration value="LINK" />
      <xsd:enumeration value="BUILD" />
      <xsd:enumeration value="EXECUTE" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="DIGITAL-IO-EDGE-DETECTION-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="RISING" />
      <xsd:enumeration value="FALLING" />
      <xsd:enumeration value="RAISING-FALLING" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="DIRECTION-KIND">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="OUT" />
      <xsd:enumeration value="INOUT" />
      <xsd:enumeration value="IN" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="DISPLAY-HW-COLOUR-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="COLOUR" />
      <xsd:enumeration value="GREY" />
      <xsd:enumeration value="MONO" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="DISPLAY-HW-TYPE-OF-CHARACTERS-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="NUMERICAL" />
      <xsd:enumeration value="ALPHA-NUMERICAL" />
      <xsd:enumeration value="SEMI-GRAPHICAL" />
      <xsd:enumeration value="GRAPHICAL" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="E-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="BOLD" />
      <xsd:enumeration value="BOLDITALIC" />
      <xsd:enumeration value="ITALIC" />
      <xsd:enumeration value="PLAIN" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="E-ENUM-FONT">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="DEFAULT" />
      <xsd:enumeration value="MONO" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="FILTER-DEBOUNCING-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="RAW-DATA" />
      <xsd:enumeration value="DEBOUNCE-DATA" />
      <xsd:enumeration value="WAIT-TIME-DATE" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="FLEXRAY-CHANNEL-NAME">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="CHANNEL-A" />
      <xsd:enumeration value="CHANNEL-B" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="HANDLE-INVALID-TYPE">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="KEEP" />
      <xsd:enumeration value="REPLACE" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="HW-ELEMENT-DEFAULT-RESET-BEHAVIOR-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="PASSIVE" />
      <xsd:enumeration value="ON" />
      <xsd:enumeration value="OFF" />
      <xsd:enumeration value="OTHER" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="HW-ELEMENT-POWER-DRIVER-TYPE-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="HS" />
      <xsd:enumeration value="LS" />
      <xsd:enumeration value="HB" />
      <xsd:enumeration value="FB" />
      <xsd:enumeration value="OTHER" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="HW-ELEMENT-RESET-ON-FAULT-BEHAVIOUR-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="AUTO" />
      <xsd:enumeration value="RE-TRIGGER" />
      <xsd:enumeration value="FOLD-BACK" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="IDENTIFIER">
    <xsd:restriction base="xsd:string" />
  </xsd:simpleType>
  <xsd:simpleType name="INTERVAL-TYPE-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="CLOSED" />
      <xsd:enumeration value="INFINITE" />
      <xsd:enumeration value="OPEN" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="L-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="FOR-ALL" />
      <xsd:enumeration value="AA" />
      <xsd:enumeration value="AB" />
      <xsd:enumeration value="AF" />
      <xsd:enumeration value="AM" />
      <xsd:enumeration value="AR" />
      <xsd:enumeration value="AS" />
      <xsd:enumeration value="AY" />
      <xsd:enumeration value="AZ" />
      <xsd:enumeration value="BA" />
      <xsd:enumeration value="BE" />
      <xsd:enumeration value="BG" />
      <xsd:enumeration value="BH" />
      <xsd:enumeration value="BI" />
      <xsd:enumeration value="BN" />
      <xsd:enumeration value="BO" />
      <xsd:enumeration value="BR" />
      <xsd:enumeration value="CA" />
      <xsd:enumeration value="CO" />
      <xsd:enumeration value="CS" />
      <xsd:enumeration value="CY" />
      <xsd:enumeration value="DA" />
      <xsd:enumeration value="DE" />
      <xsd:enumeration value="DZ" />
      <xsd:enumeration value="EL" />
      <xsd:enumeration value="EN" />
      <xsd:enumeration value="EO" />
      <xsd:enumeration value="ES" />
      <xsd:enumeration value="ET" />
      <xsd:enumeration value="EU" />
      <xsd:enumeration value="FA" />
      <xsd:enumeration value="FI" />
      <xsd:enumeration value="FJ" />
      <xsd:enumeration value="FO" />
      <xsd:enumeration value="FR" />
      <xsd:enumeration value="FY" />
      <xsd:enumeration value="GA" />
      <xsd:enumeration value="GD" />
      <xsd:enumeration value="GL" />
      <xsd:enumeration value="GN" />
      <xsd:enumeration value="GU" />
      <xsd:enumeration value="HA" />
      <xsd:enumeration value="HI" />
      <xsd:enumeration value="HR" />
      <xsd:enumeration value="HU" />
      <xsd:enumeration value="HY" />
      <xsd:enumeration value="IA" />
      <xsd:enumeration value="IE" />
      <xsd:enumeration value="IK" />
      <xsd:enumeration value="IN" />
      <xsd:enumeration value="IS" />
      <xsd:enumeration value="IT" />
      <xsd:enumeration value="IW" />
      <xsd:enumeration value="JA" />
      <xsd:enumeration value="JI" />
      <xsd:enumeration value="JW" />
      <xsd:enumeration value="KA" />
      <xsd:enumeration value="KK" />
      <xsd:enumeration value="KL" />
      <xsd:enumeration value="KM" />
      <xsd:enumeration value="KN" />
      <xsd:enumeration value="KO" />
      <xsd:enumeration value="KS" />
      <xsd:enumeration value="KU" />
      <xsd:enumeration value="KY" />
      <xsd:enumeration value="LA" />
      <xsd:enumeration value="LN" />
      <xsd:enumeration value="LO" />
      <xsd:enumeration value="LT" />
      <xsd:enumeration value="LV" />
      <xsd:enumeration value="MG" />
      <xsd:enumeration value="MI" />
      <xsd:enumeration value="MK" />
      <xsd:enumeration value="ML" />
      <xsd:enumeration value="MN" />
      <xsd:enumeration value="MO" />
      <xsd:enumeration value="MR" />
      <xsd:enumeration value="MS" />
      <xsd:enumeration value="MT" />
      <xsd:enumeration value="MY" />
      <xsd:enumeration value="NA" />
      <xsd:enumeration value="NE" />
      <xsd:enumeration value="NL" />
      <xsd:enumeration value="NO" />
      <xsd:enumeration value="OC" />
      <xsd:enumeration value="OM" />
      <xsd:enumeration value="OR" />
      <xsd:enumeration value="PA" />
      <xsd:enumeration value="PL" />
      <xsd:enumeration value="PS" />
      <xsd:enumeration value="PT" />
      <xsd:enumeration value="QU" />
      <xsd:enumeration value="RM" />
      <xsd:enumeration value="RN" />
      <xsd:enumeration value="RO" />
      <xsd:enumeration value="RU" />
      <xsd:enumeration value="RW" />
      <xsd:enumeration value="SA" />
      <xsd:enumeration value="SD" />
      <xsd:enumeration value="SG" />
      <xsd:enumeration value="SH" />
      <xsd:enumeration value="SI" />
      <xsd:enumeration value="SK" />
      <xsd:enumeration value="SL" />
      <xsd:enumeration value="SM" />
      <xsd:enumeration value="SN" />
      <xsd:enumeration value="SO" />
      <xsd:enumeration value="SQ" />
      <xsd:enumeration value="SR" />
      <xsd:enumeration value="SS" />
      <xsd:enumeration value="ST" />
      <xsd:enumeration value="SU" />
      <xsd:enumeration value="SV" />
      <xsd:enumeration value="SW" />
      <xsd:enumeration value="TA" />
      <xsd:enumeration value="TE" />
      <xsd:enumeration value="TG" />
      <xsd:enumeration value="TH" />
      <xsd:enumeration value="TI" />
      <xsd:enumeration value="TK" />
      <xsd:enumeration value="TL" />
      <xsd:enumeration value="TN" />
      <xsd:enumeration value="TO" />
      <xsd:enumeration value="TR" />
      <xsd:enumeration value="TS" />
      <xsd:enumeration value="TT" />
      <xsd:enumeration value="TW" />
      <xsd:enumeration value="UK" />
      <xsd:enumeration value="UR" />
      <xsd:enumeration value="UZ" />
      <xsd:enumeration value="VI" />
      <xsd:enumeration value="VO" />
      <xsd:enumeration value="WO" />
      <xsd:enumeration value="XH" />
      <xsd:enumeration value="YO" />
      <xsd:enumeration value="ZH" />
      <xsd:enumeration value="ZU" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="LIMIT-KIND">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="NONE" />
      <xsd:enumeration value="MIN" />
      <xsd:enumeration value="MAX" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="LIN-CHECKSUM-TYPE">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="CLASSIC" />
      <xsd:enumeration value="ENHANCED" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="MAX-COMM-MODE-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="NONE" />
      <xsd:enumeration value="SILENT" />
      <xsd:enumeration value="FULL" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="MAXIMUM-MESSAGE-LENGTH-TYPE">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="ISO-6" />
      <xsd:enumeration value="ISO" />
      <xsd:enumeration value="L-4-G" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="MEMORY-ACCESS-TYPE-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="READ" />
      <xsd:enumeration value="WRITE" />
      <xsd:enumeration value="ERASE" />
      <xsd:enumeration value="PROGRAM" />
      <xsd:enumeration value="RANDOM" />
      <xsd:enumeration value="SEQUENCE" />
      <xsd:enumeration value="BURST" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="MEMORY-MAPPED-HW-PORT-TYPE-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="UNSPECIFIED" />
      <xsd:enumeration value="DATA" />
      <xsd:enumeration value="CONTROL" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="MEMORY-SECTION-TYPE">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="CODE" />
      <xsd:enumeration value="VAR-NO-INIT" />
      <xsd:enumeration value="VAR-POWER-ON-INIT" />
      <xsd:enumeration value="VAR-FAST" />
      <xsd:enumeration value="VAR" />
      <xsd:enumeration value="CONST" />
      <xsd:enumeration value="CONFIG-DATA" />
      <xsd:enumeration value="USER-DEFINED" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="MEMORY-SEGMENT-USAGE-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="CODE" />
      <xsd:enumeration value="DATA" />
      <xsd:enumeration value="STACK" />
      <xsd:enumeration value="BOOT" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="MODE-ACTIVATION-KIND">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="ENTRY" />
      <xsd:enumeration value="EXIT" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="MONOTONY-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="INCREASING" />
      <xsd:enumeration value="DECREASING" />
      <xsd:enumeration value="STRICTLY-INCREASING" />
      <xsd:enumeration value="STRICTLY-DECREASING" />
      <xsd:enumeration value="NO-MONOTONY" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="NV-BLOCK-NEEDS-RELIABILITY-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="LOW" />
      <xsd:enumeration value="MEDIUM" />
      <xsd:enumeration value="HIGH" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="NV-BLOCK-NEEDS-WRITING-PRIORITY-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="LOW" />
      <xsd:enumeration value="MEDIUM" />
      <xsd:enumeration value="HIGH" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="OSCILLATOR-MODE-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="FUNDAMENTAL" />
      <xsd:enumeration value="OVERTONE" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="PROCESSING-KIND">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="NONE" />
      <xsd:enumeration value="RAW" />
      <xsd:enumeration value="FILTERED" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="PROCESSING-UNIT-ADRESSING-MODE-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="DIRECT" />
      <xsd:enumeration value="INDIRECT" />
      <xsd:enumeration value="INDEXED" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="PROCESSING-UNIT-ARCHITECTURE-KIND-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="HARVARD" />
      <xsd:enumeration value="NEUMANN" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="PROCESSING-UNIT-ARCHITECTURE-TYPE-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="RISC" />
      <xsd:enumeration value="CISC" />
      <xsd:enumeration value="SIMD" />
      <xsd:enumeration value="MIND" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="PROCESSING-UNIT-SPECIAL-OPCODES-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="BIT-MANIPULATION" />
      <xsd:enumeration value="MUL" />
      <xsd:enumeration value="DIV" />
      <xsd:enumeration value="FLOAT" />
      <xsd:enumeration value="MAC" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="PROGRAMMINGLANGUAGE-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="C" />
      <xsd:enumeration value="CPP" />
      <xsd:enumeration value="JAVA" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="PULSE-TEST-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="DISABLE" />
      <xsd:enumeration value="ENABLE" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="PWD-MODE-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="TWO-PHASE-INPUT" />
      <xsd:enumeration value="THREE-PHASE-INPUT" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="REAL-TYPE-ENCODING-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="SINGLE" />
      <xsd:enumeration value="DOUBLE" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="REGISTER-TYPE-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="DATA" />
      <xsd:enumeration value="ADDRESS" />
      <xsd:enumeration value="CONTROL" />
      <xsd:enumeration value="STATUS" />
      <xsd:enumeration value="STACK-POINTER" />
      <xsd:enumeration value="SPECIAL" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="RUN-MODE">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="RUN-CONTINUOUS" />
      <xsd:enumeration value="RUN-ONCE" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="SCALE-CONSTR-VALIDITY-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="VALID" />
      <xsd:enumeration value="NOT-AVAILABLE" />
      <xsd:enumeration value="NOT-DEFINED" />
      <xsd:enumeration value="NOT-VALID" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="SENSOR-HW-SIGNAL-QUALITY-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="RAW" />
      <xsd:enumeration value="FILTERED" />
      <xsd:enumeration value="DEBOUNCED" />
      <xsd:enumeration value="CODED" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="SHOW-CONTENT-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="NO-SHOW-CONTENT" />
      <xsd:enumeration value="SHOW-CONTENT" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="SHOW-RESOURCE-LONG-NAME-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="NO-SHOW-LONG-NAME" />
      <xsd:enumeration value="SHOW-LONG-NAME" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="SHOW-RESOURCE-NUMBER-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="NO-SHOW-NUMBER" />
      <xsd:enumeration value="SHOW-NUMBER" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="SHOW-RESOURCE-PAGE-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="NO-SHOW-PAGE" />
      <xsd:enumeration value="SHOW-PAGE" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="SHOW-RESOURCE-SHORT-NAME-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="NO-SHOW-SHORT-NAME" />
      <xsd:enumeration value="SHOW-SHORT-NAME" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="SHOW-RESOURCE-TYPE-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="NO-SHOW-TYPE" />
      <xsd:enumeration value="SHOW-TYPE" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="SHOW-SEE-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="NO-SHOW-SEE" />
      <xsd:enumeration value="SHOW-SEE" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="SIGNAL-FAN-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="NFOLD" />
      <xsd:enumeration value="SINGLE" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="SUBSTITUTION-TYPE">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="SPORADIC" />
      <xsd:enumeration value="EVENT-TRIGGERED" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="SW-CALIBRATION-ACCESS-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="READ-ONLY" />
      <xsd:enumeration value="NOT-ACCESSIBLE" />
      <xsd:enumeration value="READ-WRITE" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="SW-IMPL-POLICY-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="MEASUREMENT-POINT" />
      <xsd:enumeration value="STANDARD" />
      <xsd:enumeration value="MESSAGE" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="SW-SERVICE-IMPL-POLICY-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="STANDARD" />
      <xsd:enumeration value="INLINE" />
      <xsd:enumeration value="MACRO" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="SW-SERVICE-REENTRANCE-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="REENTRANCE" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="SW-VARIABLE-ACCESS-IMPL-POLICY-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="OPTIMIZED" />
      <xsd:enumeration value="SELECTABLE" />
      <xsd:enumeration value="DIRECT" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="SWC-TO-ECU-MAPPING-CONSTRAINT-TYPE">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="DEDICATED" />
      <xsd:enumeration value="EXCLUSIVE" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="SWC-TO-SWC-OPERATION-ARGUMENTS-DIRECTION-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="IN" />
      <xsd:enumeration value="OUT" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="TIMER-COUNT-DIRECTION-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="UP" />
      <xsd:enumeration value="DOWN" />
      <xsd:enumeration value="SELECTABLE" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="TIMER-MODE-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="CONTINUOUS" />
      <xsd:enumeration value="SINGLE" />
      <xsd:enumeration value="FREE" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="TP-ACK-TYPE">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="NO-ACK" />
      <xsd:enumeration value="ACK-WITHOUT-RT" />
      <xsd:enumeration value="ACK-WITH-RT" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="TT-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="CODE" />
      <xsd:enumeration value="CONTROL-ELEMENT" />
      <xsd:enumeration value="MATERIAL" />
      <xsd:enumeration value="ORGANISATION" />
      <xsd:enumeration value="OTHER" />
      <xsd:enumeration value="PRM" />
      <xsd:enumeration value="PRODUCT" />
      <xsd:enumeration value="SGML-ATTRIBUTE" />
      <xsd:enumeration value="SGMLTAG" />
      <xsd:enumeration value="STATE" />
      <xsd:enumeration value="TOOL" />
      <xsd:enumeration value="VARIABLE" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="TYPE-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="CONTENT-RELATED" />
      <xsd:enumeration value="DOC-RELATED" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="WATCH-DOG-MODE-ENUM">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="NORMAL" />
      <xsd:enumeration value="WINDOWED" />
      <xsd:enumeration value="DEBUG" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="COMMUNICATION-DIRECTION-TYPE">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="IN" />
      <xsd:enumeration value="OUT" />
    </xsd:restriction>
  </xsd:simpleType>
</xsd:schema>

